我有一个WPF应用程序,它将大量文件从源代码复制到traget。因此我使用调度程序来完成这项工作,尽管我的应用程序已经冻结并在标题栏中说“无响应”,直到文件复制完成。
ButtonPower.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Send,
new NextPrimeDelegate(this.DoAction));
我想显示进度条,直到复制操作完成,窗口也不应该冻结。我会提出任何解决方案或建议来解决这个问题
答案 0 :(得分:4)
使用Dispatcher并不意味着您的UI不会冻结 - 事实上,调度程序确保所有工作都在同一个UI线程上完成,因此您将冻结UI。相反,你应该产生一个新线程并在那里执行工作。然后使用调度程序通知UI更新,因为新线程中不允许这样做。这就是调度员的主要目的!
有关良好的实施和进一步的想法,请参阅this answer。
答案 1 :(得分:0)
您可以使用 DisableProcessWindowsGhosting
如下
[DllImport("user32.dll")]
public static extern void DisableProcessWindowsGhosting();