zoukankan      html  css  js  c++  java
  • 比较好的单例登录模式(参考网友)

     
      /// <summary>
      /// 构造函数
      /// </summary> 
      public frmMainForm()
      {
       InitializeComponent();
      }

      #region 比较优化的单例模式

      /// <summary>
      /// 比较优化的单例模式
      /// </summary>
      public static frmMainForm Instance
      {
       get { return Nested.instance; }
      }

      //初始化工作有Nested类的一个静态成员来完成,这样就实现了延迟初始化
      private class Nested
      {
       static Nested()
       {
       }

       internal static readonly frmMainForm instance = new frmMainForm();
      }

      #endregion

       try
       {
        if ((new Login()).ShowDialog() == DialogResult.OK)
        {
         bool createOne;
         
         //同步基元:确保一次只有一个线程使用该资源
         Mutex mut = new Mutex(true, "Thread_Name", out createOne);
         if (createOne)
         {
          //取得主窗口
          Application.Run(frmMainForm.Instance);

          //退出程序
          Application.Exit();

           //释放互斥体的所属权
          mut.ReleaseMutex();
         }
         else
         {
          MessageBox.Show("程序已经运行!", "系统提示");
         }
        }

    非有希望才坚持,坚持才会有希望
  • 相关阅读:
    四种方案解决ScrollView嵌套ListView问题
    [Android Bug] ListView中Header, Footer无法隐藏(gone)的问题
    Mysql介绍,与将脚本导入新数据库
    000 SpringBoot属性配置
    navicat的安装
    gradle
    004 Numpy
    003 Scipy库简介
    Mysql安装(绿色版安装)
    010 secondary namenode(同步元数据和日志)
  • 原文地址:https://www.cnblogs.com/eugenewu0808/p/Singleton.html
Copyright © 2011-2022 走看看