2009-09-25 104 views
2

如何自動重新啓動(重啓)控制檯.NET應用程序的任何想法?如何:自動重新啓動控制檯應用程序。在.NET

我知道,應用形式有這樣的事情:

Application.Restart(); 

,但這是不可能的控制檯。

另外,還要注意: 的問題是,我無法啓動相同的應用程序:)

+0

您能否介紹一下您的目標是什麼? – 2009-09-25 08:21:42

+0

我的目標很簡單 - 重新啓動控制檯應用程序;) – 2009-09-25 08:26:34

+0

能請解釋一下爲什麼你不能有兩個實例?你的應用中是否有一些代碼檢查這些情況?如果是這樣,那麼請告訴我們該代碼如何檢測其他實例。如果我們不知道這些細節,就不可能回答你的問題。 – Paulius 2009-09-25 08:31:14

回答

0

你可以爲應用程序創建一個新的進程(見Process類),啓動它的兩個實例,並在此之後立即關閉您的當前應用程序。

+0

的問題是,我無法啓動相同的應用程序的兩個實例:) – 2009-09-25 08:24:23

+0

是這樣,它們不運行併發任務?如果是這樣,你可以添加一個簡單的while(processStillRunning)Thread.Sleep(1000);直到其他應用程序成功關閉。這也可以通過Process類來完成。 – 2009-09-25 08:30:41

+0

你可以使用這個,但隨後阻斷,就在主方法中的新的進程,直到老工藝已經關閉,以確保兩個進程不會同時運行。 – Kazar 2009-09-25 08:32:56

0

那麼您可以啓動一個程序,該程序在舊實例退出後簡單地啓動程序的新實例。

0

您可以創建一個啓動程序,等待幾秒鐘,然後啓動真正的控制檯應用程序。然後,無論何時您需要重新啓動應用程序 - 運行啓動器並退出。

可能還有其他更漂亮的方法,但是您必須更詳細地解釋這部分問題:「我無法啓動同一應用的兩個實例」。

0

你可以把主方法的循環,當重新啓動條件爲真:

static void Main(string[] args) 
{ 
    do 
    { 
     Main2(args); 
     //Some cleaning may be... 
    }while(someCondition) 
} 

private static void Main2(string[] args) 
{ 
    .... 
} 
0

你可以嘗試創建一個批處理文件來運行你的控制檯應用程序,然後服務運行批處理文件,如果它目前沒有運行。

0

我可能是錯的,但是單一實例的.NET控制檯應用程序看起來像是一個設計缺陷。這聽起來更像是一個Windows服務給我。你確定控制檯應用程序是正確的,並且你不能允許多個實例嗎?

+0

是的,我敢肯定它:)它可能有多個可用的相同的過程,但他們必須從不同的文件夾開始。 – 2009-09-25 09:53:42

相關問題