是否有一个代码模板/设计模式,我可以使用时,反应鼠标点击或按钮按下
本文关键字:鼠标 按钮 代码 有一个 可以使 我可以 设计模式 是否 | 更新日期: 2023-09-27 17:54:25
我在Winforms应用程序中经常看到的一个问题是,当一个长时间运行的任务正在运行时,GUI线程卡住了,或者只是简单地停止刷新(是的,我知道-需要线程)。
是否有一个代码模板/设计模式,我可以使用时,反应鼠标点击或按钮按?是否应该在GUI应用程序中始终运行一个处理线程?
基本上,我如何写一个伟大的Winforms应用程序,易于维护,没有任何奇怪的刷新错误?
BackgroundWorker
假设你的问题是你正在寻找一个可靠的GUI框架在。net上然后我说看看Prism或Caliburn
您应该在这里查看新的异步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,新的异步CTP为GUI线程和响应性提供了简单的解决方案。
遵循n层开发实践,使用单元测试和编码UI测试(例如MSTest),并分析您的应用程序以发现瓶颈和内存问题。
首先打开VS2010并创建一个新的c# Winforms应用程序。运行它,它应该是好的。
使用表单设计器添加控件和事件处理程序。
如果事件处理程序做了一些很慢的事情,添加一个后台worker组件,并将慢的代码放在它为单独的线程提供的事件处理程序中。
只要你不在事件处理程序中减慢它的速度,UI线程就会响应。
我最好的建议是让你相信,用现代开发工具编写响应式winforms应用程序不仅是可能的,而且真的很容易。如果你遵循了上面的方法,并且有一个特殊的怪癖,那么把它作为一个问题贴出来,你可能会得到帮助。
同样,你不必为简单的应用程序而着迷——我只是在一个相当高级的LOB应用项目上经过6个多月的迭代后过渡到MVP模式。我现在正在看MVVM,但在我看到它的优势之前不会开始真正使用它。