2013-10-04 39 views
1

我有一個內置於Visual Studio中的可執行文件,它通常作爲單實例應用程序運行(即在我們的生產環境中)。我做到了這一點通過使用「Windows應用程序框架性」區域中的「做單實例應用程序」複選框,項目屬性的「應用程序」選項卡上,如下所示:允許可執行文件在運行時決定它是否是單實例應用程序

enter image description here

我的應用程序是一個工作流應用程序,因此它涉及將工作流項從一個用戶傳遞到另一個用戶所有涉及的用戶都有自己的計算機上運行此應用程序。

但是,在我的開發環境中,我經常會想要同時模擬一些不同的用戶(這種模擬用戶的功能是用戶自己不知道的功能),以便排除故障應用程序中的一個複雜的錯誤。更容易同時打開多個實例,每個模擬不同的用戶,並且在某些情況下,這是很有必要的,因爲這個錯誤可能只是在啓動應用程序的初始開銷後纔會發生 - 換句話說,關閉應用程序切換用戶上下文釋放狀態,這將排除錯誤。

我可以通過取消選中上述複選框來輕鬆完成此操作;不過,我必須記得在部署錯誤修復程序之前的某個時候重新檢查它。如果我可以設置僅存在於我的開發計算機上的應用程序以外的東西會更好,例如一個註冊表值,它觸發應用程序表現爲多實例應用程序。我搜索了高低,似乎沒有人問過這個問題。

有沒有人曾經遇到過這個?您的幫助將不勝感激。

+3

看看這個答案:http://stackoverflow.com/a/522874/573218 –

+0

你是積極的,如果你使用的運行方式,你不能在同一時間運行多個實例?只是詛咒。因爲RunAs在不同的配置文件下運行。我有一個應用程序設置爲單個實例部署在終端服務器上,沒有問題。 – jcwrequests

+0

@jcwrequests - 嗯......這是一個很好的想法。我會檢查一下。謝謝。 –

回答

1

我不確定這是做你所需要的最優雅的方式,但這是我們使用的東西。我們經常需要測試應用程序的多個實例(用戶不允許運行多個實例)。

當VS編譯器運行代碼時,它會在實例中運行.vshost,所以您不會在使用此方法同時調試時運行應用程序時遇到問題。 另外,如果您想在Windows中運行多個實例,只需重命名.EXE並運行即可。

Dim myProcesses() As Process 
myProcesses = process.GetProcessesByName("NameOfYourApp") 
If myProcesses.Length > 1 Then 
    'Close app here 
    '(You can just .Close the startup form) 
End If 
相關問題