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);

Process.Kill() 在 Winform 应用程序中导致致命错误

尝试将Thread.Sleep(2000)更改为p.WaitForInputIdle(),您可能还想在 CodeProject 上查看在 WinForm 项目中托管 EXE 应用程序; 有人创建了一个控件来执行您要查找的操作。