取消关闭主窗体,同时一些线程在后台运行,C#.windows应用程序
本文关键字:后台 线程 运行 应用程序 windows 窗体 取消 | 更新日期: 2023-09-27 18:27:17
我正在运行一个后台线程来移动windows应用程序中的一些配置文件数据。这个线程将以特定的间隔周期性运行。
如果用户试图在线程运行时关闭表单,我应该提示用户线程正在运行,并且不应该允许用户关闭表单。一旦它的(线程)完成,那么只有我必须关闭表单。
如果我在"Form_Closing"事件中执行此操作,线程将停止(当我调试时),并且控件保持形式本身。关闭表单后,线程继续。。,不确定有什么问题。
如何有效地处理此问题?
在Closing
事件形式中,您可以使用Cancel
属性:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
if (backgroundWorker1.IsBusy) {
MessageBox.Show("Thread busy!");
e.Cancel = true;
}
}
如果表单中有对线程的引用,则可以在OnFormClosing事件中检查其IsAlive属性。如果它是真的,那么阻止表单在e之前关闭。取消=!Thread.IsAlive