小小飞鹰

     中国人缺少的是步骤,太急。练太极!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

比较好的单例登录模式(参考网友)

Posted on 2006-10-31 13:05  小小飞鹰  阅读(402)  评论(0编辑  收藏  举报
 
  /// <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("程序已经运行!", "系统提示");
     }
    }