如何在c#中查询另一个正在运行的应用程序中的变量?

时间:2009-11-20 13:42:06

标签: c# shared-memory

我有一个应用程序,在启动时会检查自身的重复进程。

那部分我没错 - 但我需要检查原始运行过程中的状态变量以运行某些逻辑。

那么:如何将变量(例如bool)公开提供给其他应用程序以便他们查询呢?

4 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点。一种非常主要的方式是从文件读/写。旧的win32方式是使用PostMessage。使用远程处理或WCF和Named Pipes的方式越多。

.NET 4也获得了对Memory Mapped files的支持。

这是一个非常透彻的artcile,描述了一些不同的方法,包括支持.NET 4之外的内存映射文件 http://www.codeproject.com/KB/threads/csthreadmsg.aspx

答案 1 :(得分:1)

最简单:创建一个文件,并在其中写一些内容。

更高级,如果使用WCF正确地使用{{3}},则使用命名管道仅在本地计算机上设置一些通信通道。

答案 2 :(得分:1)

如果你使用Mutex来检查另一个进程是否正在运行(你应该是),你可以使用另一个Mutex,其锁定状态将是你正在寻找的布尔标志。

答案 3 :(得分:0)

执行此操作的标准方法是使用Windows API创建和锁定互斥锁。第一个打开的应用程序将创建并锁定互斥锁。该应用程序的任何后续执行都将无法获取,然后可以关闭。