.net - 如何在.NET 中等待另一个进程的状态?

标签 .net synchronization process

我正在开发 .NET 中的集成测试项目。测试框架可执行文件启动一个服务,然后需要等待该服务完成操作。

让 exe 等待服务完成其任务的最佳方法是什么(任务完成后服务本身不会退出)?

两个进程都可以访问同一个数据库,所以我的第一个想法是一个记录服务状态的简单表。一旦收到完成的信号,exe 就可以停止等待并完成其任务。其他方法?

让我重申一下,服务一旦完成其任务,将保持在运行/内存中状态,因此等待它退出是行不通的。 ;-)

此外,这纯粹是为了集成测试目的,并且永远不会投入生产,因此“简单”是最重要的词。

最佳答案

您可以在命令行上将信号量名称传递给服务(或通过某种其他机制,例如硬编码),然后等待服务<通过在 exe 中调用 WaitOne() 来释放它。

应用程序代码:

Semaphore s = new Semaphore(1, 1, "MyNamedSemaphore");
// start service, passing the string "MyNamedSemaphore"
s.WaitOne(); // will wait for Release() in service

服务代码:

// perform the initial task
// find semaphore name (i.e. from Environment.CommandLine)
Semaphore s = new Semaphore(1, 1, semaphoreName); // will use existing kernel object
s.Release(); // WaitOne in exe will complete

关于.net - 如何在.NET 中等待另一个进程的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/166844/

相关文章:

c - 父子进程控制

c# - 比较 LINQ to SQL 中的两个日期

c# - 当我们没有析构函数时为什么要调用 SuppressFinalize

azure - SQL Data Sync Agent 2.0 安装错误系统服务

java - 同步函数,还是在线程中锁定对象?

Windows内核内存保护

java - 在 C# 和可执行 JAR 之间交换数据的最佳方式

c# - 无法访问已处置的对象?

multithreading - 使用计时器和其他线程之间的关键部分进行多线程 Delphi 同步

android - 获取 Android OS 7 中的所有进程 ID (PID)