簡體   English   中英

如何從子進程中的致命錯誤中保存父進程

[英]How to save parent process from fatal error in child process

我的目標是隔離 NET Core 的一些代碼執行。

  1. 我有一個控制台應用程序 #1(父級?),它為另一個控制台應用程序 #2(子級?)啟動一個進程,它依次運行動態編譯的代碼。
  2. 執行該代碼可能會導致致命錯誤,例如 OutOfMemoryException。
  3. 當它發生時,應用程序#1 和應用程序#2 都會失敗。

有沒有辦法從應用程序 #2 的失敗中保存應用程序 #1?

也許我誤解了一些東西,但我認為這些應該完全分開。 請幫忙。 如果有的話,也會感謝 NET Framework 的解決方案。

        ProcessStartInfo processStartInfo = new ProcessStartInfo(filePath, processArgs)
        {
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        };

        using (Process process = new Process()
        {
            StartInfo = processStartInfo,
            EnableRaisingEvents = true
        })
        {
            process.Start();
            process.WaitForExit();

            return process.StandardOutput.ReadToEnd();
        };

因此,將子應用程序的代碼包裝起來就足夠了。 即使在子應用程序中出現OutOfMemoryExceptionStackOverflowExceptionAccessViolationException之后,父應用程序仍會繼續其工作。

請記住,子應用程序可能需要一些時間來完全釋放它在崩潰后使用的資源,因此其中一些可能仍被鎖定在父應用程序中。

謝謝大佬開眼!

暫無
暫無

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

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