Process.Kill() 在 Winform 应用程序中导致致命错误
本文关键字:致命错误 应用程序 Winform Kill Process | 更新日期: 2023-09-27 18:36:53
>今天我想在表单中打开应用程序,但它会导致错误。
if (File.Exists(ts3))
{
Process p = Process.Start(ts3);
Thread.Sleep(2000);
SetParent(p.MainWindowHandle, panel1.Handle);
}
foreach (var process in Process.GetProcessesByName(ts3check))
{
process.Kill();
}
Thread.Sleep(500);
Process p = Process.Start(ts3);
Thread.Sleep(2000);
SetParent(p.MainWindowHandle, panel1.Handle);
它应该检查,如果此应用程序已经打开,如果是,请杀死它并在我的表单中打开新应用程序。但是当我尝试在表单中打开进程时,它会导致致命错误并使我的表单停止工作。我看了大约半个小时,我看不到它。
编辑:如果应用程序尚未打开,应用程序可以工作,但如果是,它将执行这部分代码并出错
foreach (var process in Process.GetProcessesByName(ts3check))
{
process.Kill();
}
Thread.Sleep(500);
Process p = Process.Start(ts3);
Thread.Sleep(2000);
SetParent(p.MainWindowHandle, panel1.Handle);
尝试将Thread.Sleep(2000)
更改为p.WaitForInputIdle()
,您可能还想在 CodeProject 上查看在 WinForm 项目中托管 EXE 应用程序; 有人创建了一个控件来执行您要查找的操作。