【发布时间】:2011-08-10 02:19:55
【问题描述】:
我是 WPF 的初学者,在我的应用程序中我需要执行一系列初始化步骤,这些步骤需要 10-15 秒才能完成,在此期间我的 UI 变得无响应。
我昨天使用了后台工作程序,但它没有更新我的窗口,实际上它被冻结了。不确定,但也许它不起作用,因为此控件仅适用于 Windows 窗体。
更新:
如果不是太麻烦,你能给我一个例子来使用替代方案吗?就我而言,该程序将从数据库中获取一些值。
【问题讨论】:
-
对于后台工作者,你实现了 ReportProgress() 吗? msdn.microsoft.com/en-us/library/…
-
@Oscar:BackgroundWorker:DoWork 不会使 UI 无响应。可能您可能正在后台工作人员 AsyncCompleted 事件中进行一些 UI 更新。如果您只使用 backgroundWorkder 从数据库中检索数据,它应该可以在不冻结 UI 的情况下工作。
-
也许我做错了什么,让我再检查一下。
-
@Oscar,即使你没有,如果后台工作人员被正确实现,表单应该能够在任务完成时移动。后台工作人员至少应该实现一个 DoWork 方法。这是一个教程,也许这会有所帮助。 switchonthecode.com/tutorials/…
标签: c# .net wpf multithreading backgroundworker