您可以在應用程序的program.cs
中使用Mutex
。
我們的應用程序實際上是一組以EXE開頭的應用程序集合,然後EXE可以啓動其他應用程序。另外,主應用程序有三種風格。我們需要確保每個用戶上下文中一次只打開一個風味。
我們使用這樣的:
Boolean createdNew;
var mut = new Mutex(true, Assembly.GetExecutingAssembly().FullName, out createdNew);
if (!createdNew)
{
if (String.IsNullOrEmpty(appName))
return;
var processName = Process.GetCurrentProcess().ProcessName;
foreach (var p in Process.GetProcessesByName(processName))
{
if (p.MainWindowTitle.Contains(appName))
{
if (userVars.SendDebugOutput)
{
//we found one already running...do anything about it?
}
return;
}
}
}
您將要修改的互斥創建包含一個字符串,其中包括你需要區分情況下使用該信息。
這將被放入program.cs
代碼頁,之前開始您的主表單的行,例如, Application.Run(new frmMyMainForm());
。
請參閱關於創建單實例應用程序的文章,除非您需要對其進行修改,以便系統互斥體名稱基於用戶帳戶信息(如用戶名)中的內容。這樣,應用程序就是單個配置文件中的單個實例。 http://sanity-free.org/143/csharp_dotnet_single_instance_application.html –
應用程序不能是單個實例,因爲用戶可能會打開多次,但使用不同的設置,並且此時必須檢查已打開的實例設置以瞭解如果你打開另一個。 –
你應該在你的問題中更好地解釋這個要求。如果他們瞭解這一要求,它將幫助你從人們那裏得到更好的答案。 –