2017-08-16 45 views
0

我有一個測試應用程序,無法加載多次。它工作正常。如何防止多個應用程序加載,但允許加載其不同的實例?

private void App_OnStartup(object sender, StartupEventArgs e) 
     { 
    if (Process.GetProcessesByName(currentProcess.ProcessName).Length > 1) 
        { 
          MessageBox.Show("Instance already running", "Warning"); 
          Application.Current.Shutdown(); 
         } 
    } 
} 

但是,如果單個用戶想要與另一個實例創建此應用程序的快捷方式呢?例如"Test.exe" 2

enter image description here

此應用程序應該只加載一次,當它開始像「將Test.exe 2」。我在e.Args[0]中收到了這個數字的實例,然後我需要保留它以便與此應用程序的另一個快捷方式進行比較。

所以這裏的問題是:我該怎麼做?如何將現有的流程與不同的實例編號進行比較。任何想法讚賞!

+0

@ASh有另一種方式,而不是使用互斥體,你怎麼了認爲? –

+1

爲什麼你稱之爲「實例號碼」?這只是一個命令行參數。無論如何,檢查進程名稱也沒有意義,用戶可以複製您的應用程序並重命名可執行文件。 – CodeCaster

回答

1

你可以使用Mutex以防止多個實例從您的應用程序,無論名稱或可執行文件的路徑的同時運行:

Prevent multiple instances of a given app in .NET?

+0

互斥體不起作用 –

+0

爲什麼不呢? – mm8

+0

我想不是,我可以同時執行許多當前應用程序 –

相關問題