同一个PC只能运行一个应用实例(考虑多个用户会话情况)

原文: 同一个PC只能运行一个应用实例(考虑多个用户会话情况)

 1 class Program
 2 {
 3     private static Mutex m;
 4 
 5     [STAThread]
 6     static void Main()              
 7     {
 8         bool createNew = false;
 9 
10         /*
11          * 在运行终端服务的服务器上,已命名的系统 mutex 可以具有两级可见性。
12          * 如果名称以前缀“Global\”开头,则 mutex 在所有终端服务器会话中均为可见。
13          * 如果名称以前缀“Local\”开头,则 mutex 仅在创建它的终端服务器会话中可见。 在这种情况下,服务器上各个其他终端服务器会话中都可以拥有一个名称相同的独立 mutex。
14          * 如果创建已命名 mutex 时不指定前缀,则它将采用前缀“Local\”。 
15          * 在终端服务器会话中,只是名称前缀不同的两个 mutex 是独立的 mutex,这两个 mutex 对于终端服务器会话中的所有进程均为可见。
16          * 即:前缀名称“Global\”和“Local\”说明 mutex 名称相对于终端服务器会话(而并非相对于进程)的范围。 
17          */
18         string mutexName = String.Format("Global\\{0}", "IPP PCL");
19 
20         try 
21         {
22             m = new System.Threading.Mutex(true, mutexName, out createNew);
23         }
24         catch (UnauthorizedAccessException unauthorizedAccessex)
25         {
26             //命名的互斥体存在并具有访问控制安全性,但用户不具有 MutexRights.FullControl。
27         }
28 
29         if (!createNew)
30         {
31             Console.WriteLine("Application is running");
32 
33             return;
34         }
35 
36         Console.WriteLine("Success");
37 
38         Console.ReadKey();
39     }
40 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值