zoukankan      html  css  js  c++  java
  • 使用Mutex实现程序单实例运行(c#)

    大家在开发程序的时候,有时需要限制程序,只能同时运行一个实例,实现此功能,对于VB.NET是非常容易的,只要指定一个属性即可,但是C#实现起来,就稍微繁琐了。

    C#实现单实例运行的方法,也有多种,比如利用 Process 查找进程的方式,利用 API findwindow 查找窗体的方式,还有就是 利用 Mutex 原子操作,上面几种方法中, 综合考虑利用 Mutex 的方式是较好的选择。

    下面给出使用 Mutex 实现单实例运行的例子:

    C# 中,找到 program.cs ,这里面的 

    [STAThread]

    static void Main()

    {

        
    //……

    }

    是程序运行的入口点,默认情况下,里面的代码大致如下:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(
    false);
        Application.Run(
    new Form1());
    }加入单实例限制后的代码如下:

    [STAThread]
    static void Main()
    {
        
    bool isAppRunning = false;
        System.Threading.Mutex mutex 
    = new System.Threading.Mutex(
            
    true,
            System.Diagnostics.Process.GetCurrentProcess().ProcessName,
            
    out isAppRunning);
        
    if (!isAppRunning)
        {
            MessageBox.Show(
    "本程序已经在运行了,请不要重复运行!");
            Environment.Exit(
    1);
        }
        
    else
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(
    false);
            Application.Run(
    new Form1());
        }
    }
  • 相关阅读:
    玩具数据库
    数据库中可能会出现的表
    SqlDbHelper
    重写 覆盖 虚方法
    页面标签的初始化
    如何将UTF8转换为UTF8n
    小软件项目开发的管理(转)
    SCRUM软件开发过程(转)
    在.Net如何制作自定义的快捷方式
    What Is a Leader
  • 原文地址:https://www.cnblogs.com/wequst/p/1371754.html
Copyright © 2011-2022 走看看