2012-11-20 77 views
3

我创建一个DLL项目,将有一个公共方法Process();控制台和服务

将有会调用这个方法每三分钟一个服务之间的C#共享DLL。

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

如果该方法正在运行,我怎能控制台应用程序从调用它,而服务已在运行的呢?

+1

这些将是两个完全独立的进程 - 除非你们在它们之间进行协调(棘手,难以得到正确的并且表现良好),你不能这样做。你为什么需要这样的东西?您应该让服务协调对此方法的任何访问。 – Oded

回答

4

你将需要设置某种IPC - 例如global mutex在该方法中使用信号正在运行/不运行当前将解决该问题(只要两者都运行在同一台机器上)。 。

+0

+1占地约“同一机器”点与命名互斥。 – pstrjds

1

你可以使用一个named mutex,以防止用户调用的方法相同。

Addiotional注:
您可能会遇到权限问题有关命名的互斥体,如果服务最终建立它,它以管理员身份运行,您的控制台应用程序可能没有权限访问该互斥体,除非你设置适当的权限在互斥体上。