我正在创建一个带有DLL的项目,该DLL将具有一个公共方法Process();
将会有一个服务,每三分钟调用一次这个方法。
还有一个控制台应用程序将调用此方法。
如果该方法当前正在运行,如何在服务运行时让控制台应用程序不再调用它?
答案 0 :(得分:4)
您将需要设置某种类型的IPC - 例如,在该方法中使用的global mutex信号正在运行/当前未运行将解决该问题(只要两者都在同一台机器上运行即可)...
答案 1 :(得分:1)
您可以使用named mutex来阻止呼叫者调用相同的方法。
Addiotional note:
如果服务最终创建并以管理员身份运行,您可能会遇到有关指定互斥锁的权限问题,除非您在互斥锁上设置适当的权限,否则您的控制台应用程序可能无权访问互斥锁。
答案 2 :(得分:1)
您应该考虑使用互斥锁。这是一篇来自MSDN的文章: http://msdn.microsoft.com/en-us/library/hw29w7t1(v=vs.100).aspx