0
在我的應用程序中有一個父進程,它會產生子進程。我試圖利用這個父進程來監視孩子,以確保GUI保持響應,如果沒有,生成一個轉儲文件。檢測子進程是否掛起父進程
我遇到的問題是Process.Responding
只能檢測一些圖形用戶界面掛起(例如在GUI線程或堆棧溢出)而不是其他(例如GUI線程上的死鎖)。
所以問題是:我還能如何檢查孩子的GUI是否仍然從父進程更新?
編輯:基於迄今爲止的意見,我想我應該澄清。我負責使用插件體系結構來維護應用程序的框架,該插件體系結構非常多線程,並且擁有數十萬行代碼的代碼庫,其中大部分代碼不受我控制。雖然我理解理想的方法不是首先掛起,但它偶爾也會發生。我希望能夠平穩地收集這些情況並收集調試信息,以便解決問題。
我考慮的另一種方法是使用GUI線程來觸摸文件,並讓父進程檢查文件的時間戳。但是,我寧願不在GUI線程上執行文件操作。
如果您使用多個線程,請嘗試使用異步並等待與「主線程」不相關的進程。 – darkndream
爲什麼在UI線程上運行代碼可能會死鎖?如果您必須在您的程序中創建一個程序來監視它是否掛起,這是一個不好的跡象。 – Loathing
我總是使用log4net進行日誌記錄。它顯示時間戳和線程號,以便您知道您在哪個過程中停留。 https://logging.apache.org/log4net/release/example-apps.html –