zoukankan      html  css  js  c++  java
  • 使用Mutex实现单程序实例

    单程序实例叫起来有点拗口哦,意思也就是在同一计算机,同一时间段,只允许该程序实例化一次,也就是进程管理器里只有一个该程序的进程。

    Mutex应该是用来线程间互斥的。看到很多程序都是用它来实现单程序实例 的,也有通过process来实现(好像是根据进程名来判断)

    如果要多用户情况下实现单例,在name前加上@ “Global\”

    先来看代码吧:

     1 namespace 单程序实例
    2 {
    3 static class Program
    4 {
    5 ///<summary>
    6      /// 应用程序的主入口点。
    7      ///</summary>
    8 [STAThread]
    9 static void Main()
    10 {
    11 Application.EnableVisualStyles();
    12 Application.SetCompatibleTextRenderingDefault(false);
    13
    14 Mutex mutex;
    15 string name = "test1";
    16 try
    17 {
    18 mutex = new Mutex(false, name);
    19 }
    20 catch (Exception exception)
    21 {
    22 MessageBox.Show("程序已经启动(mutex fail).\n\n" +exception.Message);
    23 return;
    24 }
    25 using (mutex)
    26 {
    27 if (!mutex.WaitOne(40, false))
    28 {
                  MessageBox.Show("程序已经启动(mutex fail).\n\n" +exception.Message);
    29                     return;
    30 }
    31 Application.Run(new Form1());
    32 }
    33 }
    34 }
    35 }



  • 相关阅读:
    归并排序
    汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI、汉诺塔VII
    Uncle Tom's Inherited Land
    汉诺塔III
    汉诺塔X
    Frosh Week
    hdu 1007最近点对问题
    POJ1579:Function Run Fun
    Hdu1163 Eddy's digitai Roots(九余数定理)
    放苹果问题
  • 原文地址:https://www.cnblogs.com/yczz/p/2268453.html
Copyright © 2011-2022 走看看