应用程序运行时窗口被阻塞c#

时间:2013-06-20 15:56:13

标签: c#

我在c#(Windows Form)上编写了一个小应用程序(visual stud 2012) 当我运行应用程序时它正常工作,除了当应用程序运行时我不能再点击窗口甚至移动它,直到它完成过程 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

您可以实施BackgroundWorker Control/Class

要执行此操作,只需将控件BackgroundWorker从工具箱拖到窗体上即可。选择刚刚创建的后台工作器,然后双击它。现在将您需要与UI分开进行的所有代码放入此事件中。

示例:

//Assuming we have a background worker called backgroundWorker
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) {

     //put code here

}

现在在触发代码块中,请调用backgroundWorker.RunWorkerAsync()

示例:

private buttonDoWork_Click(object sender, EventArgs e) { 
    backgroundWorker.RunWorkerAsync(); 
}

请小心谨慎,threadsafe

答案 1 :(得分:0)

查看使用BackgroundWorker Class

  

在单独的线程上执行操作。

     

BackgroundWorker类允许您对a运行操作   独立的专用线程。下载等耗时的操作   和数据库事务可能会导致您的用户界面(UI)   就好像它们在运行时停止响应一样。当你   想要一个响应式用户界面,你将面临长时间的延迟   通过这样的操作,BackgroundWorker类提供了方便   溶液

答案 2 :(得分:0)

听起来你正在UI线程上进行处理。您在UI线程上执行的任何处理都会消除可以为用户界面事件提供服务的周期。