日期:2014-05-18  浏览次数:20826 次

【疑问】关于Winform,当主窗体关闭时,主线程为关闭。
最近遇到这个问题,打开一个窗体,并且new了一个新的线程

这个线程又new Process对象,比如这个Process对象做了一个程序的静默安装,

当通过Process中的WaitForExit()方法告知子线程程序已安装完毕,线程销毁,并且退出

主窗体。


  当时从任务管理器看到,主线程还是没有退出。是不是因为这个线程 new的这个Process没有结束,导致的主线程没有退出?

【我只调用了WaitForExit()方法,没有调用Process.close()的方法】

------解决方案--------------------
跟Process没有关系,是有线程没结束。
------解决方案--------------------
Environment.Exit(0),退出整个项目
------解决方案--------------------
C# code


Thread.IsBackground = True;

------解决方案--------------------
WaitForExit定时返回,检查线程是否被终止
C# code

        while (!process.HasExited)
        {
            if (backgroundWorker1.CancellationPending)
            {
                process.Kill();
                continue;
            }
            else
                Thread.Sleep(1000);
        }