zoukankan      html  css  js  c++  java
  • C# WinForm程序防止多开的方法总结(亲测)

    1、Winform启动的时候,检测是否存在同样的进程名,防止程序多开;

     1 static class Program
     2     {
     3         /// <summary>
     4         /// 应用程序的主入口点。
     5         /// </summary>
     6         [STAThread]
     7         static void Main()
     8         {
     9             Process[] processes = Process.GetProcesses();
    10             Process currentProcess = Process.GetCurrentProcess();
    11             bool processExist = false;
    12             foreach (Process p in processes)
    13             {
    14                 if (p.ProcessName == currentProcess.ProcessName && p.Id != currentProcess.Id)
    15                 {
    16                     processExist = true;
    17                 }
    18             }
    19 
    20             if (processExist)
    21             {
    22                 Application.Exit();
    23             }
    24             else
    25             {
    26                 Application.EnableVisualStyles();
    27                 Application.SetCompatibleTextRenderingDefault(false);
    28                 Application.Run(new Form1());
    29             }
    30         }
    31     }
     1 static class Program
     2     {
     3         /// <summary>
     4         /// 应用程序的主入口点。
     5         /// </summary>
     6         [STAThread]
     7         static void Main()
     8         {
     9             string processName = Process.GetCurrentProcess().ProcessName;
    10             Process[] processes = Process.GetProcessesByName(processName);
    11             //如果该数组长度大于1,说明多次运行
    12             if (processes.Length > 1)
    13             {
    14                 MessageBox.Show("程序已运行,不能再次打开!");
    15                 Environment.Exit(1);
    16             }
    17             else
    18             {
    19                 Application.EnableVisualStyles();
    20                 Application.SetCompatibleTextRenderingDefault(false);
    21                 Application.Run(new Form1());
    22             }
    23         }
    24     }

    2、利用Mutex互斥对象防止程序多开;

     1 static class Program
     2     {
     3         /// <summary>
     4         /// 应用程序的主入口点。
     5         /// </summary>
     6         [STAThread]
     7         static void Main()
     8         {
     9             bool isAppRunning = false;
    10             Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning);
    11             if (!isAppRunning)
    12             {
    13                 MessageBox.Show("程序已运行,不能再次打开!");
    14                 Environment.Exit(1);
    15             }
    16             Application.EnableVisualStyles();
    17             Application.SetCompatibleTextRenderingDefault(false);
    18             Application.Run(new Form1());
    19         }
    20     }
  • 相关阅读:
    <mySql完全手册>2011031401
    <海量数据库解决方案>2011030801
    检索
    <mySql完全手册>2011022401
    <自己动手写操作系统>2011031601
    数据结构和算法基础
    <海量数据库解决方案>2011031001
    <自己动手写操作系统>2011032101
    Delphi方法类型
    .NET下的Login机制
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14277936.html
Copyright © 2011-2022 走看看