2011-05-17 91 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你更喜欢那个)。如果多个服务器进程是从多个客户端启动的,则第一个服务器进程会赢,其他进程会再次死机。适当的时间后

  • 客户端重试