日期:2014-05-19  浏览次数:20665 次

C# windows窗体的程序Singleton模式怎么不能控制了?
窗体类
using   System;
using   System.Drawing;
using   System.Collections;
using   System.ComponentModel;
using   System.Windows.Forms;

namespace   WindowsApplication2
{
///   <summary>
///   Form1   的摘要说明。
///   </summary>
public   class   Form1   :   System.Windows.Forms.Form
{
///   <summary>
///   必需的设计器变量。
///   </summary>
private   System.ComponentModel.Container   components   =   null;

private   static   Form1   instance;
private   Form1()
{
InitializeComponent();
}
public   static   Form1   GetInstance()
{
if(instance==null)
{
instance=new   Form1();
}
return   instance;
}

///   <summary>
///   清理所有正在使用的资源。
///   </summary>
protected   override   void   Dispose(   bool   disposing   )
{
if(   disposing   )
{
if(components   !=   null)
{
components.Dispose();
}
}
base.Dispose(   disposing   );
}

#region   Windows   窗体设计器生成的代码
///   <summary>
///   设计器支持所需的方法   -   不要使用代码编辑器修改
///   此方法的内容。
///   </summary>
private   void   InitializeComponent()
{
this.components   =   new   System.ComponentModel.Container();
this.Size   =   new   System.Drawing.Size(300,300);
this.Text   =   "Form1 ";
}
#endregion
}
}

主类调用

using   System;
using   System.Drawing;
using   System.Collections;
using   System.ComponentModel;
using   System.Windows.Forms;

namespace   WindowsApplication2
{
///   <summary>
///   CMainClass   的摘要说明。
///   </summary>
public   class   CMainClass
{
public   CMainClass()
{
//
//   TODO:   在此处添加构造函数逻辑
//
}
[STAThread]
static   void   Main()  
{
Application.Run(Form1.GetInstance());
}
}
}


------解决方案--------------------
你这种Singleton只是类调用时的Singleton 不能实现程序的Singleton 考虑用Mutex实现 或者检查当前里程实现