簡體   English   中英

Process.Kill()在Winform應用程序中導致致命錯誤

[英]Process.Kill() is causing fatal error in Winform application

今天,我想在窗體內打開應用程序,但這會導致錯誤。

                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() ,您可能還想看看在p.WaitForInputIdle() 上的WinForm項目托管EXE應用程序 有人創建了一個控件來執行您想要的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM