通常情况下,我会为每个想要进行多线程操作的动作创建一个线程。我的做法是这样的:
private Thread threadForWycena;
private void someMethod() {
threadForWycena = new Thread(globalnaWycena);
threadForWycena.Start();
}
当用户想要关闭GUI之一时,我会检查此线程是否正在运行,如果是,则禁止关闭。
private void ZarzadzajOplatamiGlobalneDzp_FormClosing(object sender, FormClosingEventArgs e)
{
if (threadForWycena.IsAlive) {
MessageBox.Show("Wycena jest w toku. Zamknięcie okna jest niemożliwe.", "Brak wyjścia :-)");
e.Cancel = true;
}
}
有没有一种使用线程池的方法,可以防止窗口关闭,并且告诉用户哪个线程仍然活着以及正在执行什么任务?
private Thread threadForWycena;
(当然,名字不同而不是一个池)是否看起来很“无聊”。对我来说,了解正在发生什么,正在运行什么以及什么没有运行是更容易的。通常,正在运行的功能在旧功能完成之前不会再次运行。 - MadBoy