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

本文关键字:窗口 应用程序 运行 | 更新日期: 2023-09-27 18:19:18

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

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

你可以实现BackgroundWorker控件/类。

要做到这一点,只需将控件BackgroundWorker从工具箱拖到窗体上。选择刚刚创建的后台worker并双击它。现在,将需要从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(); 
}

看看如何使用BackgroundWorker类

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

BackgroundWorker类允许你在单独的专用螺纹。耗时的操作,比如下载和数据库事务可能会导致您的用户界面(UI)看起来很混乱就好像它在运行时停止了响应。当你想要一个响应灵敏的UI,你就会面临相关的长时间延迟有了这样的操作,BackgroundWorker类提供了一个方便的解决方案。

听起来你正在UI线程上做你的处理。你在UI线程上做的任何处理都会占用用户界面事件可以被服务的周期。