【发布时间】:2011-12-23 16:55:14
【问题描述】:
对于这篇长篇文章,我感到非常抱歉。我需要一些关于 c# wpf 问题的帮助。我已经构建了一个复杂的用户界面(不知何故),并且有一些按钮......比如开始和停止等等。
当我单击开始按钮时,执行过程开始于与某些协议层和其他协议层进行通信,这是一个漫长的过程.. 在此过程中,我必须显示一些通知 UI,例如“输入文本”、“选择某些东西” " 等等......这次我必须显示一些 wpf 窗口对象......一段时间后我必须自动销毁窗口并再次进行处理。
起初我尝试在主窗口类中运行执行。但它导致当执行开始时.. 用户无法单击任何内容并且 ui 没有响应而只是挂起。我调查了这个问题……发现 UI 正忙于协议层执行中的处理,所以它没有响应。
这是我的问题...你能给我一些解决方案吗...
- 我将有 2 个按钮..启动和停止
- 当我单击开始按钮时...将在名为 Processor 的函数中启动一个大进程(如嵌套的 for 循环,其中包含一个大 int,将持续 50 秒)。
- 在处理函数时,处理器将创建几个窗口并显示它们等待 5-10 秒,然后将它们销毁。或用户点击窗口上的;s
- 并且在整个过程中,停止按钮都应该是可点击的,这样当我点击停止按钮时.. 进程应该停止。
我在后台工作程序、调度程序...并使用单独的线程进行了尝试。但没有运气。我想我错过了一些东西。因为如果我等待一些结果显示一个窗口..窗口肯定会挂起..如果我用不同的线程将它们分开..它不会相互通信。请给我一些建议
【问题讨论】:
-
Dispatcher可能仍然会锁定 UI,如果它是 CPU 密集型的,但是BackgroundWorker应该可以正常工作。您能否向我们展示您尝试使用 BackgroundWorker 的代码?
标签: wpf multithreading process background dispatcher