在不阻止UI线程的情况下关闭多线程winform c#app

时间:2012-02-17 03:25:11

标签: multithreading shutdown

我等待那些线程在主窗体的关闭事件处理程序中完成,但UI线程被阻止,是否有更好的解决方案?

这是代码段:

 public partial class Form1 : Form
{
    private Thread _worker;
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        _worker.Join();

    }

我希望显示一个等待工作线程完成的进度表,怎么做?

1 个答案:

答案 0 :(得分:0)

您将_worker线程加入当前线程(UI线程)。这就是UI被挂起的原因。

如果你想在申请被关闭之前_worker完成,我想提出以下想法。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
        // Check worker thread complete or not
        if (_worker.ThreadState != ThreadState.Stopped)
        {
            e.Cancel = true;
            MessageBox.Show("Not complete, please wait");
        }
}

我希望这对你有用。