c#将cmd args传递给现有实例而不是新实例

时间:2014-09-18 15:43:34

标签: c# mutex multiple-instances

我有一个C#Windows窗体应用程序,它是手动启动的,然后主要在后台运行。在我的注册表中,该程序设置为处理“dstel”URL协议。也就是说,href="dstel:1234567890"将成功打开我的程序。

问题是我的程序需要在任何给定时间只运行一个实例。我的研究表明,为了确保多个实例不同时运行,我应该使用互斥锁(由How to check if another instance of the application is running提供)。

假设有效,我现在离开了当有人点击网页上的特殊dstel链接时该做什么。我需要的是如何将命令行输入重定向到我已经运行的应用程序的方法xyz()?

为了清楚起见,我按照以下顺序设想了以下事件:

  1. 我手动启动程序的实例A
  2. 我点击了dstel链接
  3. 我的程序的实例B开始
  4. 感谢互斥锁,我程序的实例B意识到实例A已经在运行
  5. 实例B将其命令行args传递给实例A的方法xyz()。<<<<我的问题
  6. 实例B退出
  7. 我有一些可能有用的事情,最值得注意的是使用帮助应用程序或通过WCF设置命名管道。我愿意接受你的任何建议。

    谢谢!

1 个答案:

答案 0 :(得分:1)

查看http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.applicationservices.windowsformsapplicationbase(v=vs.110).aspx

如果为基础应用程序覆盖此类并将其受保护的IsSingleInstance属性设置为true,则可以覆盖方法OnStartupNextInstance(),该方法会在程序的后续实例启动时随时调用。 / p>

这应该像你想要的那样做!