我在c#(Windows Form)上编写了一个小应用程序(visual stud 2012) 当我运行应用程序时它正常工作,除了当应用程序运行时我不能再点击窗口甚至移动它,直到它完成过程 我该如何解决这个问题?
答案 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类允许您对a运行操作 独立的专用线程。下载等耗时的操作 和数据库事务可能会导致您的用户界面(UI) 就好像它们在运行时停止响应一样。当你 想要一个响应式用户界面,你将面临长时间的延迟 通过这样的操作,BackgroundWorker类提供了方便 溶液
答案 2 :(得分:0)
听起来你正在UI线程上进行处理。您在UI线程上执行的任何处理都会消除可以为用户界面事件提供服务的周期。