欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# Winform程序实现防止多开的方法总结【亲测】

程序员文章站 2023-11-18 17:42:10
本文实例讲述了c# winform程序实现防止多开的方法。分享给大家供大家参考,具体如下:1、winform启动的时候,检测是否存在同样的进程名,防止程序多开;static class program...

本文实例讲述了c# winform程序实现防止多开的方法。分享给大家供大家参考,具体如下:

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

static class program
  {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [stathread]
    static void main()
    {
      process[] processes = process.getprocesses();
      process currentprocess = process.getcurrentprocess();
      bool processexist = false;
      foreach (process p in processes)
      {
        if (p.processname == currentprocess.processname && p.id != currentprocess.id)
        {
          processexist = true;
        }
      }

      if (processexist)
      {
        application.exit();
      }
      else
      {
        application.enablevisualstyles();
        application.setcompatibletextrenderingdefault(false);
        application.run(new form1());
      }
    }
  }

static class program
  {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [stathread]
    static void main()
    {
      string processname = process.getcurrentprocess().processname;
      process[] processes = process.getprocessesbyname(processname);
      //如果该数组长度大于1,说明多次运行
      if (processes.length > 1)
      {
        messagebox.show("程序已运行,不能再次打开!");
        environment.exit(1);
      }
      else
      {
        application.enablevisualstyles();
        application.setcompatibletextrenderingdefault(false);
        application.run(new form1());
      }
    }
  }

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

static class program
{
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [stathread]
    static void main()
    {
      bool isapprunning = false;
      mutex mutex = new mutex(true, system.diagnostics.process.getcurrentprocess().processname, out isapprunning);
      if (!isapprunning)
      {
        messagebox.show("程序已运行,不能再次打开!");
        environment.exit(1);
      }
      application.enablevisualstyles();
      application.setcompatibletextrenderingdefault(false);
      application.run(new form1());
    }
}