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

时间:2015-01-09 19:06:20

标签: c# winforms forms process

今天我想在表单中打开应用程序,但它会导致错误。

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

1 个答案:

答案 0 :(得分:1)

尝试将Thread.Sleep(2000)更改为p.WaitForInputIdle(),您可能还想在CodeProject上查看Hosting EXE Applications in a WinForm project。有人创建了一个控件来完成你正在寻找的东西。