2010-08-30 35 views
0

如何檢查我的Visual Basic應用程序的多個實例?當用戶運行應用程序時,我想知道有多少實例已經打開。謝謝。檢查Visual Basic應用程序的多個實例

+1

你想這樣做,以防止多個實例啓動? – 2010-08-30 17:38:02

回答

2

「最快」的方式將用於System.Diagnostics.Process類來查找特定進程名稱的所有實例,如果您只想獲取進程的數量。

因此,作爲找到「資源管理器」實例的示例,請使用它。

Dim instanceCount As Integer = Process.GetProcessesByName("explorer").Count() 
Console.WriteLine(String.Format("{0} Instances Running", instanceCount.ToString())) 
Console.ReadLine() 

如果您正在尋找可以限制用戶1個實例,那麼我會考慮創建一個名爲互斥並使用防止他人開始。

+0

Visual Basic項目屬性「應用程序」選項卡上有一個「爲單一實例應用程序」複選框,它爲您處理互斥問題。 – 2010-08-30 17:44:12

+0

這個答案的必然結果是確保你沒有命名你的程序「資源管理器」。 – 2010-08-30 17:54:43

+0

好點漢斯! – 2010-08-30 18:11:22

2

在進程之間共享一個信號量,併爲每個暴發戶添加一個許可證。最直接的方式可能是使用命名信號量。有關詳細信息,請參閱關於http://msdn.microsoft.com/en-us/library/ms682438%28VS.85%29.aspx的備註部分。

+0

我認爲如果他們只是想要點數,這有點矯枉過正。 – 2010-08-30 17:41:43

+0

爲什麼?信號量是併發應用程序最基本的組成部分之一,我不會稱之爲複雜。 – 2010-08-30 17:43:56

+0

一個複雜因素:似乎沒有一個很好的方式來獲得當前的計數而不釋放,所以你需要做一個release/waitforsingleobject來獲得計數。 – 2010-08-30 17:48:17