![]() |
1
3
这是因为您在循环中等待操作完成。这个循环在主线程上完成,因此UI被冻结。相反,你应该通过
以下是我将如何实现它:
|
![]() |
2
2
我不能从您的代码示例中确定您在哪里调用它,但一般来说,您应该 从未 在UI线程上执行阻塞工作。正如您所提到的,这将导致UI变得无响应。你必须在后台完成这项工作。我的猜测是,您正在UI线程上直接运行ConnectionIsActive循环,这意味着在从该方法返回之前,UI状态更新基本上将被阻止。 看起来您的想法是正确的(使用异步方法),但实现似乎过于复杂。 方便的是,即使服务器实现不使用异步方法,WCF也允许您拥有异步客户端契约。契约只需要具有相同的契约名称,并专门为异步模式标记,如本例所示:
现在在客户端,您可以使用
然后,您的代码可能如下所示:
|
![]() |
3
1
使用类似的方法:
这样称呼它:
它接受一些委托,在后台线程中调用它,完成后得到返回值并在UI线程中调用“after”委托。 在上面的示例中,复合交互应如下所示:
如果你对调度员感到困惑,请阅读 Build More Responsive Apps With The Dispatcher 关于msdn的文章。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 4 月前 |
![]() |
CactusCake · if语句中应有分号 5 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 6 月前 |