防止服务器中的多个实例用户名相同

时间:2013-06-18 20:18:14

标签: c# winforms

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

PS:我正在使用Winforms和C#

2 个答案:

答案 0 :(得分:2)

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

bool b = true;
Mutex mutex = new Mutex(true, Environment.UserName.ToLowerInvariant() , out b);
if (!b) throw new InvalidOperationException("Another instance is running");

答案 1 :(得分:1)

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

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