2012-05-18 32 views
0

我跑出去的想法關閉,不能因此在這裏找到關於它的任何引用我去後,立即... 我需要保持輔助應用程序至極是不相關的我的C#項目總是在後臺運行。因此,如果這個輔助應用程序崩潰或其他人手動關閉它,它會自動通過我的c#應用程序重新啓動。如何重新打開文件時,它通過我的C#應用​​程序

我不知道該怎樣來完成這一個線索,我的意思是檢查,如果該應用程序關閉通過我的C#應用​​程序外在的東西。

任何幫助將不勝感激。 在此先感謝。

+0

如果,用戶首先殺死你的C#應用​​程序,然後關閉其他應用程序 – Ramesh

+0

@Ramesh如果用戶關閉我的C#應用​​程序,然後在其他應用程序不會再重新啓動。此特定行爲只能在我的應用程序運行時發生。我真的需要一些代碼行例子。 – MikVal

回答

2

下面的代碼是在C#,它是一個WinForm內部。

private void Form1_Load(object sender, EventArgs e) 
    { 
     Process p = Process.GetProcessesByName("Notepad")[0]; 
     p.EnableRaisingEvents = true; 
     p.Exited += new EventHandler(p_Exited); 
    } 

    void p_Exited(object sender, EventArgs e) 
    { 
     MessageBox.Show("Exit"); 
    } 

它看起來與名稱的記事本&一個過程檢索它的第一個實例。它將EnableRaisingEvents設置爲true並掛鉤到Exited事件。每當記事本關閉時,它都會顯示警報。

基於這個邏輯,你可以構建你的應用程序。

+0

謝謝,我會試一試! – MikVal

+0

+1,非常好。不需要輪詢進程列表 – Steve

+0

@Ramesh如果你有這麼好的話,我還有一個問題,你上面提供的代碼工作正常,但如果第二次應用程序關閉了第二次,那麼它將無法工作。我應該添加什麼,然後使它以這種方式工作? – MikVal

0

您可以使用FileSystemWatcher讓其他應用程序修改該文件的手錶。

FileSystemWatcher的有類似改變,創建,重命名,刪除,它可以訂閱跟蹤文件更改的事件。

1

作爲一種解決方案,您可以使用Windows服務調用您始終運行的應用程序。
您可以使該服務從應用程序捕獲錯誤返回代碼,並根據錯誤重新啓動它。

1

可以保持如果它正在運行或在vb.net

不使用過程類對於各個p作爲處理在Process.GetProcessesByName(「通信器」) 的ShowWindow檢查的處理(p.MainWindowHandle,SHOW_WINDOW .SW_NORMAL) 下一個p

,如果你要的不是在礦井名單的過程中,你可能會再次啓動。 阿希什庫馬爾

1

最簡單的方法是運行一個計時器,並在記號事件,使用 -

if (Process.GetProcessesByName("communicator").Count() == 0) 
{ 
    Process.Start("communicator.exe"); 
} 
+0

我一開始是這麼想的,但也許它不會消耗太多的資源,因爲它總是在計時器結束時檢查運行的實例嗎? – MikVal

相關問題