最近我的应用程序无法正常关闭时遇到问题。在它被告知退出后,当我在任务管理器中查看该进程仍在运行时,我无法终止该进程。
突然我意识到一个奇怪的模式。仅当我在应用程序运行时打开 OpenFileDialog 时才会出现关机问题。我调试了一下,发现一些线程在应用程序应该退出后没有关闭。此外,令我惊讶的是,当我调用 OpenFileDialog.ShowDialog() 时,它产生了很多线程(见下图)。线程在应用程序的整个生命周期中都是活动的。
为什么 OpenFileDialog 会产生这么多线程?以及为什么在文件对话框关闭后它们没有关闭。
OpenFileDialog 问题与我的关机问题有何关系...?
openFileDialog.ShowDialog() 之前的线程:
对话框打开时的线程:
openFileDialog.ShowDialog() 返回后的线程:
应用程序关闭后挂起的线程:
打开对话框的代码:
private void startAllSequenceToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog ofn = new OpenFileDialog();
DialogResult result = ofn.ShowDialog();
if (result == DialogResult.Cancel)
return;
MessageBox.Show("do stuff");
}