2011-05-17 128 views
3

我有2個程序(客戶端和服務器)使用ipc進行通信。基本上,客戶端在服務器上發送一些數據,並且他們在同一臺計算機上工作。我希望客戶端等待服務器進程啓動,如果它尚未啓動但不太明白如何實現這一點。我想使用2個事件(一個是我的客戶端創建的,另一個是由服務器創建的),並且包裝這兩個調用以等待關鍵部分中的這些事件。你會建議什麼?C#等待進程啓動

+0

['Process.WaitForExit()'](http://msdn.microsoft.com/en-us/library/fb4aw7b8.aspx) – 2011-05-17 11:24:01

+0

我需要像WaitForStart() – Blablablaster 2011-05-17 11:25:50

+0

['WaitForInputIdle()'](http://msdn.microsoft.com/en-us/library/8d7363e2.aspx)應該工作。 – 2011-05-17 11:26:32

回答

0

IPC如何工作?我假設NamedPipes,但這個想法對我來說是一樣的。我不得不做這樣的事情在過去,做了大致是這樣的:

  • 客戶端啓動,連接到IPC服務器

  • 連接失敗,客戶端恢復通過觸發(假設了NamedPipes要不要緊。)一個服務器啓動(這可以用很多方式處理,從執行服務器二進制文件到已知的位置到使用trigger started services

  • 服務器啓動並且作爲第一件東西聲明的IPC地址(或全局互斥量if你更喜歡那個)。如果多個服務器進程是從多個客戶端啓動的,則第一個服務器進程會贏,其他進程會再次死機。適當的時間後

  • 客戶端重試