我有一个在 c# (Windows Form)(visual stud 2012) 上编码的小应用程序,当我运行应用程序时它工作正常,除了当应用程序运行时我不能再点击窗口甚至移动它,直到它完成这个过程我该如何解决这个问题?
问问题
2288 次
3 回答
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();
}
请小心并保持线程安全。
于 2013-06-20T16:09:37.857 回答
0
在单独的线程上执行操作。
BackgroundWorker 类允许您在单独的专用线程上运行操作。下载和数据库事务等耗时的操作可能会导致您的用户界面 (UI) 在运行时似乎停止响应。当您需要响应式 UI 并且面临与此类操作相关的长时间延迟时,BackgroundWorker 类提供了一种方便的解决方案。
于 2013-06-20T15:58:27.380 回答
0
听起来您正在 UI 线程上进行处理。您在 UI 线程上执行的任何处理都会占用可以为用户界面事件提供服务的周期。
于 2013-06-20T15:58:37.643 回答