我有 2 个程序(客户端和服务器)使用 ipc 进行通信。基本上,客户端在服务器上发送一些数据,它们在同一台计算机上工作。我希望客户端等待服务器进程启动,如果它还没有启动但不太明白如何实现这一点。我想使用 2 个事件(一个是我的客户端创建的,另一个是服务器创建的)并将两个调用都包装起来以在关键部分等待这些事件。你会建议什么?
最佳答案
IPC 是如何工作的?我假设是 NamedPipes,但这个想法对我来说是一样的。过去我不得不做类似的事情,大致是这样做的:
客户端启动,连接到 IPC 服务器(假设使用 NamedPipes。应该无关紧要)
连接失败,客户端通过触发服务器启动来恢复(这可以通过多种方式处理,从从已知位置执行服务器二进制文件到使用 trigger started services )
服务器启动,并且作为第一件事之一声明 IPC 地址(或者全局互斥锁,如果你更喜欢的话)。如果多个服务器进程从多个客户端启动,则第一个获胜,其他进程再次死亡。
客户端在适当的时间后重试
关于C# 等待进程启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6030034/