C# 等待进程启动

标签 c# process

我有 2 个程序(客户端和服务器)使用 ipc 进行通信。基本上,客户端在服务器上发送一些数据,它们在同一台计算机上工作。我希望客户端等待服务器进程启动,如果它还没有启动但不太明白如何实现这一点。我想使用 2 个事件(一个是我的客户端创建的,另一个是服务器创建的)并将两个调用都包装起来以在关键部分等待这些事件。你会建议什么?

最佳答案

IPC 是如何工作的?我假设是 NamedPipes,但这个想法对我来说是一样的。过去我不得不做类似的事情,大致是这样做的:

  • 客户端启动,连接到 IPC 服务器(假设使用 NamedPipes。应该无关紧要)

  • 连接失败,客户端通过触发服务器启动来恢复(这可以通过多种方式处理,从从已知位置执行服务器二进制文件到使用 trigger started services )

  • 服务器启动,并且作为第一件事之一声明 IPC 地址(或者全局互斥锁,如果你更喜欢的话)。如果多个服务器进程从多个客户端启动,则第一个获胜,其他进程再次死亡。

  • 客户端在适当的时间后重试

关于C# 等待进程启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6030034/

相关文章:

c# - 为什么我使用此代码得到 "the process cannot access the file * because it is being used by another process"?

c# - 在单独的进程中运行代码

bash - 为进程分配 cpu 核心 - Linux

c# - 编写代码契约(Contract)而不是直接检查逻辑代码有好处吗?

shell - 我如何知道 bash Kill 是否会使用 pid 还是 jobspec?

c++ - 映射文件不显示信息

.net - 查找我自己的 .NET 进程的所有子进程/查明给定进程是否是我自己的子进程?

c# - 如何判断一年中的某一天是否已经过去?

c# - 如何使用linq在where子句中设置条件过滤器?

c# - c#中反射中的SetValue