当应用程序执行长时间运行的任务时,您是否有一个好的解决方案来保持“请稍候”winform“绘制”?
我尝试在每个步骤中使用 form.refresh() ,但是会发生一些长时间运行的查询,这意味着这不够频繁。
基本上是这个那么问题 https://stackoverflow.com/questions/148963/keeping-guis-responsive-during-long-running-tasks但是,通过 VSTO(而不是 Python)在 Excel 中使用 C#。
正如 statichippo 提到的,我将使用 BackgroundWorker 类。其目的是简化多线程并允许工作线程在不锁定 GUI 的情况下执行耗时的处理。
这是引用自MSDN http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx:
BackgroundWorker 类允许您
在单独的上运行操作,
专用线程。耗时
下载和数据库等操作
交易可能会导致您的用户
界面(UI)看起来好像
已停止响应
跑步。当您想要响应式 UI 时
并且您面临长时间的延误
与此类操作相关的
BackgroundWorker 类提供了
方便的解决方案。
这是一个关于如何在 Windows 窗体中使用 BackgroundWorker 类的很好的教程:使用BackgroundWorker类在WinForms中实现多线程 http://fernandof.wordpress.com/2007/04/04/implementing-multi-threading-in-winforms-using-the-backgroundworker-class/
对于复杂的场景,有更复杂的方法在 C# 中实现多线程,但对于大多数简单的场景,BackgroundWorker 效果很好(至少对我来说)。
以下是我从 Google 获取的有关 C# 多线程的一些链接:
MSDN 线程 http://msdn.microsoft.com/en-us/library/aa645740%28VS.71%29.aspx
C# 多线程简介 http://www.c-sharpcorner.com/UploadFile/mgold/MultithreadingIntro10062005000439AM/MultithreadingIntro.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)