我有一个应用程序,它在启动时会检查自身的重复进程。
那部分我是对的 - 但我需要检查原始运行过程中的状态变量以运行一些逻辑。
那么:我如何让其他应用程序公开可用的变量(例如 bool),以便他们可以查询它?
我有一个应用程序,它在启动时会检查自身的重复进程。
那部分我是对的 - 但我需要检查原始运行过程中的状态变量以运行一些逻辑。
那么:我如何让其他应用程序公开可用的变量(例如 bool),以便他们可以查询它?
有很多方法可以做到这一点。一种非常原始的方法是从文件中读取/写入。旧的 win32 方法是使用PostMessage。更多的 .NET 方法是使用远程处理或 WCF 和命名管道。
.NET 4 也获得了对内存映射文件的支持。
这是一个非常全面的文章,描述了一些不同的方法,包括支持 .NET 4 http://www.codeproject.com/KB/threads/csthreadmsg.aspx之外的内存映射文件
最简单的:创建一个文件,并在其中写入一些内容。
更高级,并且在正确完成时更健壮,使用WCF,您使用命名管道仅在本地计算机上设置一些通信通道。
如果您使用互斥锁来检查另一个进程是否正在运行(您应该这样做),您可以使用另一个互斥锁,其锁定状态将是您正在查找的布尔标志。
执行此操作的标准方法是使用 Windows API 创建和锁定互斥锁。第一个打开的应用程序将创建并锁定互斥锁。该应用程序的任何后续执行都将无法获取它,然后可以关闭。