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());
        }
    }
  • 相关阅读:
    react-native项目之样式总结
    charles捕获手机端请求数据
    git常用命令常用场景
    window.open新打开窗口与新开标签页
    IE浏览器兼容性模式
    atom编辑器社区插件推荐
    操作linux命令
    java.lang.OutOfMemoryError处理错误
    SQLServer中ISNULL、NULLIF和CONVERT函数
    plsql 查询结果窗口 不正常
  • 原文地址:https://www.cnblogs.com/wequst/p/1371754.html
Copyright © 2011-2022 走看看