zoukankan      html  css  js  c++  java
  • C# WINFORM判断程序是否运行,且只能运行一个实例

    判断程序是否已经运行,使程序只能运行一个实例有很多方法,下面记录两种,

    方法1:线程互斥

        static class Program
    {
    private static System.Threading.Mutex mutex;

    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    mutex = new System.Threading.Mutex(true, "OnlyRun");
    if (mutex.WaitOne(0, false))
    {
    Application.Run(new MainForm());
    }
    else
    {
    MessageBox.Show("程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    Application.Exit();
    }
    }
    }

    方法2:

    这种检测进程的名的方法,并不绝对有效。因为打开第一个实例后,将运行文件改名后,还是可以运行第二个实例。

        static class Program
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    // get the name of our process
    string p = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
    // get the list of all processes by that name
    System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(p);
    // if there is more than one process
    if (processes.Length > 1)
    {
    MessageBox.Show("程序已经在运行中", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    Application.Exit();
    }
    else
    {
    Application.Run(new MainForm());
    }
    }
    }
  • 相关阅读:
    DNS 访问 Service【转】
    Service IP 原理【转】
    通过 Service 访问 Pod【转】
    定时执行 Job【转】
    并行执行 Job【转】
    Job 失败了怎么办?【转】
    用 k8s 运行一次性任务【转】
    运行自己的 DaemonSet【转】
    python之路——递归函数
    尝试加载 Oracle 客户端库时引发 BadImageFormatException
  • 原文地址:https://www.cnblogs.com/JuneZhang/p/2412121.html
Copyright © 2011-2022 走看看