3

我正在创建一个带有 DLL 的项目,该项目将具有一种公共方法Process();

将有一个服务每三分钟调用一次此方法。

还将有一个控制台应用程序将调用此方法。

如果该方法当前正在运行,如何防止控制台应用程序在服务已经运行时调用它?

4

3 回答 3

4

您将需要设置某种 IPC - 例如,在该方法中使用的全局互斥锁表示当前正在运行/未运行将解决该问题(只要两者都在同一台机器上运行)......

于 2012-11-20T20:14:54.857 回答
1

您可以使用命名互斥锁来防止调用者调用相同的方法。

附加说明:
如果服务最终创建它并以管理员身份运行,您可能会遇到有关命名互斥锁的权限问题,您的控制台应用程序可能无权访问互斥锁,除非您在互斥锁上设置适当的权限。

于 2012-11-20T20:15:21.033 回答
1

您应该考虑使用互斥锁。这是一篇来自 MSDN 的文章,其中包含一些详细信息:http: //msdn.microsoft.com/en-us/library/hw29w7t1 (v=vs.100).aspx

于 2012-11-20T20:15:40.700 回答