2014-09-18 46 views
1

我有一個C#Windows窗體應用程序,它手動啓動,然後主要在後臺運行。在我的註冊表中,該程序設置爲處理「dstel」url協議。也就是,href="dstel:1234567890"將成功打開我的程序。c#將cmd參數傳遞給現有實例,而不是新實例

問題是我的程序在任何給定的時間只需要運行一個實例。我的研究表明,爲了確保多個實例不能同時運行,我應該使用互斥體(How to check if another instance of the application is running)。

假設有效,我現在只剩下有人在網頁上點擊我特殊的dstel鏈接時該做什麼了。我需要的是如何將命令行輸入重定向到我已經運行的應用程序的方法xyz()?

要清楚,我設想了以下事件,依次是:

  1. 手工啓動我的程序的實例的
  2. 我點擊鏈接dstel
  3. 的實例B在我程序啓動
  4. 由於互斥鎖,我的程序的實例B意識到實例A已在運行
  5. 實例B將其命令行參數傳遞給實例A的方法xyz()。< < < <我的問題
  6. 實例B退出

我腦子裏有幾件事情,可能的工作,最顯着的或者使用一個輔助應用程序或設置通過WCF命名管道。我願意接受您可能提出的任何建議。

謝謝!

+3

請看http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.applicationservices.windowsformsapplicationbase(v=vs.110).aspx。特別是它的IsSingleInstance屬性和OnStartupNextInstance方法 – jamesthollowell 2014-09-18 15:51:11

+0

@jamesthollowell做到了,謝謝!如果你把答案放在答案中,我會將其標記爲正確的。 – 2014-09-18 16:57:44

回答

相關問題