是否有代码模板/设计模式,我可以在对鼠标点击或按下按钮做出反应时使用?

我经常在Winforms应用程序中看到的一个问题是,当一个长时间运行的任务正在运行时,GUI线程会被卡住,或者只是停止刷新(是的,我知道 – 需要线程)。

是否有代码模板/设计模式,我可以在对鼠标点击或按下按钮做出反应时使用? 是否应该在GUI应用程序中始终运行处理线程?

基本上,我如何编写一个易于维护且没有任何奇怪的刷新错误的优秀Winforms应用程序?

的BackgroundWorker

假设你的问题是你在.net上寻找一个可靠的GUI框架,那么我说看看Prism或Caliburn。

你应该在这里查看新的Async CTP: http : //msdn.microsoft.com/en-us/vstudio/gg316360

和教程: http : //geekswithblogs.net/mbcrump/archive/2010/10/28/visual-studio-async-ctp-for-the-rest-of-ushellip.aspx

无论提供UI的方法如何,新的Async CTP都为GUI线程和响应提供了简单的解决方案。

遵循n层开发实践,使用unit testing和编码UI测试(例如MSTest),并分析您的应用程序以查找瓶颈和内存问题。

首先打开VS2010并创建一个新的C#Winforms应用程序。 跑吧,应该没问题。

使用表单设计器添加控件和事件处理程序。

如果事件处理程序执行的操作很慢,请添加后台工作程序组件,并将慢速代码放在它为单独的线程提供的事件处理程序中。

只要您不使用事件处理程序中的代码减慢它,UI线程就会响应。

我最好的建议是让您相信编写响应式winforms应用程序不仅可行,而且使用现代开发工具非常容易。 如果你按照上面的描述并具有特定的可疑性,那么将特定事物作为一个问题发布,你可能会得到帮助。

此外,您不必对简单的应用程序感兴趣 – 我在一个相当高级的LOB应用程序项目上进行了超过6个月的迭代后转换到了MVP模式。 我现在正在看MVVM,但在看到优势之前不会真正开始使用它。