0

我有一个 WPF 应用程序,它将大量文件从源复制到 traget。因此,我使用调度程序来完成这项工作,即使我的应用程序已冻结并在标题栏中显示“未响应”,直到文件复制完成。

ButtonPower.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Send,
new NextPrimeDelegate(this.DoAction));  

我想显示进度条,直到复制操作完成,窗口也不应该冻结。我会提出任何解决方案或建议来解决这个问题

4

2 回答 2

4

使用 Dispatcher 并不意味着您的 UI 不会冻结 - 事实上,调度程序确保所有工作都在同一个 UI 线程上完成,因此您冻结 UI。相反,您应该生成一个新线程并在那里执行工作。然后使用调度程序通知 UI 更新,因为在新线程中不允许这样做。这就是dispatcher的主要作用!

请参阅此答案以获得良好的实施和进一步的想法。

于 2013-03-09T12:15:10.430 回答
0

您可以使用DisableProcessWindowsGhosting如下

[DllImport("user32.dll")]
public static extern void DisableProcessWindowsGhosting();
于 2021-06-10T09:33:59.947 回答