|
|
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计时器在“后台”将其作为协作协程执行。 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |
|
|
Barta · WPF MVVM不更新视图 1 年前 |
|
|
Denis Ivanov · WPF控件在属性更改时不会更新 1 年前 |
|
|
codymanix · WPF:TextBlock周围可见小边框? 1 年前 |
|
|
Nostromo · 来自背景对象的工具提示 1 年前 |
|
|
Nuvolari · 从可观测集合添加/删除时出现对象处理异常 2 年前 |
|
|
CCarter · 只能在设计器中DependencyObject的DependencyProperty上设置显示“Binding”的WPF ICommand DependencyProperties[重复] 2 年前 |
|
|
Thern · 在UI线程(WPF)上的void方法中调用异步函数 2 年前 |