zoukankan      html  css  js  c++  java
  • 仅允许程序运行一个实例代码实现

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

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

    可能一下想到定义一个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();
    }


    }

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

  • 相关阅读:
    Charles下载和使用
    C# mvc读取模板并修改上传到web
    nginx 安装
    python 测试:wraps
    Linux下MySQL数据库常用基本操作 一
    myeclipse新建maven项目
    java 数据导入xls
    tomcat允许跨域请求:
    Import Projects from git
    c# DataTable 序列化json
  • 原文地址:https://www.cnblogs.com/ATually/p/1911152.html
Copyright © 2011-2022 走看看