如何自動重新啓動(重啓)控制檯.NET應用程序的任何想法?如何:自動重新啓動控制檯應用程序。在.NET
我知道,應用形式有這樣的事情:
Application.Restart();
,但這是不可能的控制檯。
另外,還要注意: 的問題是,我無法啓動相同的應用程序:)
如何自動重新啓動(重啓)控制檯.NET應用程序的任何想法?如何:自動重新啓動控制檯應用程序。在.NET
我知道,應用形式有這樣的事情:
Application.Restart();
,但這是不可能的控制檯。
另外,還要注意: 的問題是,我無法啓動相同的應用程序:)
你可以爲應用程序創建一個新的進程(見Process類),啓動它的兩個實例,並在此之後立即關閉您的當前應用程序。
的問題是,我無法啓動相同的應用程序的兩個實例:) – 2009-09-25 08:24:23
是這樣,它們不運行併發任務?如果是這樣,你可以添加一個簡單的while(processStillRunning)Thread.Sleep(1000);直到其他應用程序成功關閉。這也可以通過Process類來完成。 – 2009-09-25 08:30:41
你可以使用這個,但隨後阻斷,就在主方法中的新的進程,直到老工藝已經關閉,以確保兩個進程不會同時運行。 – Kazar 2009-09-25 08:32:56
那麼您可以啓動一個程序,該程序在舊實例退出後簡單地啓動程序的新實例。
您可以創建一個啓動程序,等待幾秒鐘,然後啓動真正的控制檯應用程序。然後,無論何時您需要重新啓動應用程序 - 運行啓動器並退出。
可能還有其他更漂亮的方法,但是您必須更詳細地解釋這部分問題:「我無法啓動同一應用的兩個實例」。
你可以把主方法的循環,當重新啓動條件爲真:
static void Main(string[] args)
{
do
{
Main2(args);
//Some cleaning may be...
}while(someCondition)
}
private static void Main2(string[] args)
{
....
}
你可以嘗試創建一個批處理文件來運行你的控制檯應用程序,然後服務運行批處理文件,如果它目前沒有運行。
我可能是錯的,但是單一實例的.NET控制檯應用程序看起來像是一個設計缺陷。這聽起來更像是一個Windows服務給我。你確定控制檯應用程序是正確的,並且你不能允許多個實例嗎?
是的,我敢肯定它:)它可能有多個可用的相同的過程,但他們必須從不同的文件夾開始。 – 2009-09-25 09:53:42
您能否介紹一下您的目標是什麼? – 2009-09-25 08:21:42
我的目標很簡單 - 重新啓動控制檯應用程序;) – 2009-09-25 08:26:34
能請解釋一下爲什麼你不能有兩個實例?你的應用中是否有一些代碼檢查這些情況?如果是這樣,那麼請告訴我們該代碼如何檢測其他實例。如果我們不知道這些細節,就不可能回答你的問題。 – Paulius 2009-09-25 08:31:14