5

我开发了一个托管在一个服务器中的应用程序。许多用户通过远程桌面连接访问它,但有时我在任务管理器中看到同一用户打开了 2-x 实例。我需要防止同一用户无法打开多个实例。但请注意,该程序可以由不同的用户多次打开。请原谅我的英语。谢谢。

PS:我正在使用 Winforms 和 C#

4

2 回答 2

2

您可以使用用户名创建互斥锁。

bool b = true;
Mutex mutex = new Mutex(true, Environment.UserName.ToLowerInvariant() , out b);
if (!b) throw new InvalidOperationException("Another instance is running");
于 2013-06-18T20:23:17.663 回答
1

查看应用程序的另一个实例是否已在运行的推荐方法是使用互斥锁。例如,请参见此处

由于您希望允许应用程序的多个实例在不同的用户运行它们时运行,只需将当前用户名添加到互斥锁的名称中即可。例如,调用 Mutex"MyApp"+Environment.UserName

于 2013-06-18T20:27:01.563 回答