wpf c#状态窗口更新

时间:2010-03-08 08:45:48

标签: c# wpf controls

我正在尝试创建一个状态窗口,其内容(文本框)应该在冗长的操作中更改。 从主应用程序调用并更新此状态窗口。 不幸的是,内容仅在操作结束时更新。 我正在使用VS2008,C#和WPF。

谢谢。

3 个答案:

答案 0 :(得分:3)

这是另一个允许更好格式化的答案:

代码应该像这样:

BackgroundWorker bgWorker = new BackgroundWorker();

bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);

bgWorker.RunWorkerCompleted += new 
    RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted);

bgWorker.RunWorkerAsync();

bgWorker_DoWork方法中,调用“Dispatcher.Invoke”(或“Dispatcher.BeginInvoke”,具体取决于具体情况),并且调用的委托可能会更新您的文本框(因为它位于与文本框相同的线程。)

答案 1 :(得分:1)

如果您正在呼叫服务并且呼叫是同步的,则主应用程序无法更新任何机会。你需要将它们放在不同的线程上。此外,如果服务调用获得更高的优先级(UI线程总是优先级较低),则需要强制告诉系统更新这些优先级。

答案 2 :(得分:1)

如何在BackgroundWorker线程中进行冗长的操作,并使用Dispatcher每隔一段时间通知一次内容?它会为您的UI提供响应而又渐进的感觉。