7
4

2 回答 2

6

您需要使用 BackgroundWorker 以便耗时的任务将在单独的线程中异步运行。这将允许 Windows 多任务处理使 UI 响应。您应该使用等待光标或其他视觉指示器让用户知道您的应用程序正忙。

来自 MSDN MSDN BackgroundWorker

BackgroundWorker 类允许您在单独的专用线程上运行操作。下载和数据库事务等耗时的操作可能会导致您的用户界面 (UI) 在运行时似乎停止响应。当您需要响应式 UI 并且面临与此类操作相关的长时间延迟时,BackgroundWorker 类提供了一种方便的解决方案。

要在后台执行耗时的操作,请创建一个 BackgroundWorker 并侦听报告操作进度的事件,并在操作完成时发出信号。您可以通过编程方式创建 BackgroundWorker,也可以从工具箱的“组件”选项卡将其拖到表单上。如果在 Windows 窗体设计器中创建 BackgroundWorker,它将出现在组件托盘中,其属性将显示在属性窗口中。

要设置后台操作,请为 DoWork 事件添加事件处理程序。在此事件处理程序中调用您的耗时操作。要开始操作,请调用 RunWorkerAsync。要接收进度更新通知,请处理 ProgressChanged 事件。要在操作完成时接收通知,请处理 RunWorkerCompleted 事件。

于 2012-06-14T05:14:41.717 回答
1

您需要在后台线程上运行大型任务,以免锁定 UI(主)线程。

于 2012-06-14T02:19:48.723 回答