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());
        }
    }
  • 相关阅读:
    初次接触json...
    vector algorithm find
    网站安全(13) ——目录穿越漏洞(Directory Traversal)
    网站安全(20) —— 语义URL攻击
    网站安全(7) —— PHP文件包含漏洞介绍
    让PHP更快的提供文件下载
    PHP中关于include()和require() 的区别问题
    PHP中 获取全路径的文件的扩展名
    MySQL varchar计算:求列的数目和计算N的最大值
    jmeter使用分享
  • 原文地址:https://www.cnblogs.com/wequst/p/1371754.html
Copyright © 2011-2022 走看看