|
|
1
17
单线程操作确实会很痛苦,而且它永远不会像你想的那样工作。在WPF中,窗口最终会变黑,程序将变为“无响应”。 我建议使用BackgroundWorker来完成长时间运行的任务。
这确实是最简单的方法,而不是试图单线程完成。 |
|
|
2
16
|
|
|
3
4
执行一段代码,以与执行实际任务的方法相同的方式同步显示等待消息。只需将这一行放在冗长的过程之前:
. 注: here . 选项#2 做这件事 桌面应用程序 Application.DoEvents 方法。WPF提供了两种方法来实现类似的结果: 选项#2.1 DispatcherFrame class . 检查一个有点笨重的例子 MSDN :
调用空操作
请参阅讨论,哪一个(2.1或2.2)更好 here 选项#3 当您显示的不是简单的等待消息,而是动画时,它会派上用场。在等待另一个长时间渲染操作完成的同时渲染加载动画是一个问题。基本上,我们需要两个渲染线程。你不能在一个窗口中有多个渲染线程,但你可以将加载动画放在一个有自己渲染线程的新窗口中,使其看起来不像是一个单独的窗口。 下载 从 this github “,但我在网上找不到了),或者看看下面的主要观点:
|
|
4
3
另一种选择是将长时间运行的例程编写为返回的函数
例如,这意味着已经完成了30%的路程。然后,您可以使用WPF计时器在“后台”将其作为协作协程执行。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 11 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 11 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 11 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |