2009-10-05 42 views
1

我發現有很多帖子顯示如何檢測應用程序實例是否已經運行。但我無法找到任何顯示如何訪問或使用相同的正在運行的應用程序。訪問運行應用程序的實例

我已經創建了shell菜單項並將它們鏈接到一個應用程序。例如。如果你右鍵點擊任何文件夾,它會顯示「OS Monitor」。如果我點擊應用程序啓動。如果我再次右鍵單擊該文件夾並選擇「OS監視器」,則會啓動同一應用程序的另一個實例。我必須防止這一點。更進一步,當用戶關閉「OS Monitor」表單時,我只是隱藏了它。因此,如果用戶再次選擇相同的菜單選項,則需要顯示相同的運行表單。

我已經使用C#2005創建了應用程序。有沒有人知道我如何訪問應用程序的相同運行實例。

在此先感謝。

回答

0

由於應用程序的地址空間是分開的,所以必須使用一些全局機制/對象。一個名爲mutexes的例子是:你創建一個已命名的互斥體,如果它已經存在,那麼應用程序已經在運行。 Using Mutexes for ensuring that only one instance is running is presented on this blog

第二步是與正在運行的實例進行通信。因此你必須使用一些IPC機制。如果你正在運行Windows,最簡單的方法就是使用Windows消息(比如Blog中的例子)。請注意,由於您必須撥打本機電話,因此這不適用於MONO。如果有問題,您可以使用其他可能的網絡連接。看到這個問題的答案:IPC Mechanisms in C# - Usage and Best Practices

將參數傳輸到正在運行的實例後,必須退出,否則最終會運行兩個應用程序。在很短的時間內(參數傳輸的時間),你確實有兩個實例正在運行,但只有一個有效地完成了這項工作。

此回覆是在您可以/希望對「OS監視器」進行修改的前提下進行的。

+0

謝謝jdehaan !!! 您已提供有價值的信息。我會盡力實現這一點。 – IrfanRaza 2009-10-09 11:56:06

相關問題