当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在.NET中等待另一个进程的状态?》经验,为你挑选了1个好方法。

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

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

这两个进程都可以访问同一个数据库,所以我首先想到的是一个记录服务状态的简单表.一旦它发出信号表明它已经完成,exe就可以停止等待并完成其任务.其他方法?

让我重申,一旦服务完成其任务,该服务将保持运行/内存状态,因此等待它退出将无效.;-)

此外,这纯粹用于集成测试目的,并且永远不会投入生产,所以"简单"就是操作词.



1> Christoffer ..:

您可以Semaphore在命令行上(或通过其他一些机制,如硬编码)将名称传递给服务,然后Release()通过调用WaitOne()您的exe 来等待服务.

应用代码:

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

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有