• 仅允许程序运行一个实例代码实现


    有时候,我们可能会有这样的需求,希望程序只运行一个实例。因为可能运行多个实例会导致某一些问题。

    初步想法:添加一个标志变量,用来标志是否有程序实例在运行。

    可能一下想到定义一个bool变量,这个想法没错,但是应该用什么逻辑来表示这个bool变量的值呢?换句话说,应该在什么情况下给bool变量true值呢?这又是个问题,所以单纯的使用bool变量时行不通的,必须给它找个依托,于是我们还需要一个Mutex变量(一个信号量),如果信号量第一次创建,那么bool变量为true,如果信号已经存在,那么bool变量为false。

    代码如下:

    static void Main(string[] args)
    {
    Boolean flag;
    //如果名字为“MutexName”的Mutex对象已经存在 则 flag为false,反之为true
    System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out flag);
    if (flag) {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(
    false);
    Application.Run(
    new Form());
    instance.ReleaseMutex();
    }
    else
    {
    MessageBox.Show(
    "程序已经在运行。", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
    Application.Exit();
    }


    }

    写这篇博文时,突然有一点感受那就是,代码的逻辑其实与生活是休戚相关的,多关注生活也是写好代码的一个必要条件之一

  • 相关阅读:
    Django 安装
    node上的__dirname和./的区别
    Mysql存储之ORM框架SQLAlchemy(一)
    selenium只打开一个浏览器窗口
    Mysql存储之原生语句操作(pymysql)
    汽车之家反爬
    javascript反混淆之packed混淆(一)
    python近期遇到的一些面试问题(三)
    [转载]关于python字典类型最疯狂的表达方式
    .net爬虫了解一下
  • 原文地址:https://www.cnblogs.com/ATually/p/1911152.html
Copyright © 2020-2023  润新知