【疑问】关于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);
}