当线程死掉时,包含JVM的线程不会终止JVM
问题描述:
我已经在C#中编写了一个小程序,它将集成到巡航控件中(编辑:oops,按回车键太早),创建特定的(并且不是预定义的)JVM在他们自己的独立线程中。但是,在杀死线程时,JVM仍然存在并且未被卸载。该功能可以正确处理.bat文件 - 但是如果它们调用JVM,它仍然保持打开状态!当线程死掉时,包含JVM的线程不会终止JVM
每个线程从这个类的一个实例创建并调用运行()
_Critical用于通过用于测试的原因主处理。
class BatThread
{
private string _args, _fileName;
private bool _critical;
public ManualResetEvent Flag;
public BatThread(string fileName, string args, bool critical)
{
_fileName = fileName;
_args = args;
_critical = critical;
Flag = new ManualResetEvent(false);
}
public void Run()
{
using (Process Proc = new Process())
{
Proc.StartInfo.FileName = _fileName;
Proc.StartInfo.Arguments = _args;
Proc.StartInfo.RedirectStandardError = false;
Proc.StartInfo.RedirectStandardInput = false;
Proc.StartInfo.RedirectStandardOutput = false;
Proc.StartInfo.UseShellExecute = true;
Proc.Start();
while (true)
{
if (Proc.WaitForExit(100))
{
break;
}
else if (this.Flag.WaitOne(100))
{
Proc.Kill();
break;
}
Thread.Sleep(5000);
}
this.Flag.Set();
}
}
public bool critical { get { return _critical; } }
}
关闭为什么?问题在于为什么进程在创建它们的线程关闭之后仍然存在......以及如何解决这个问题。 – Izzy