首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

单例模式的窗口对象被close后,对象自身还存在吗

2011-12-19 
单例模式的窗口对象被close后,对象本身还存在吗?有一个窗口设计成单例模式,但是点确定按钮时CLOSE此窗口。

单例模式的窗口对象被close后,对象本身还存在吗?
有一个窗口设计成单例模式,但是点确定按钮时CLOSE此窗口。这时对象本身还存在吗?
我理解的应该是不存在了,但跟踪执行了一下,发现每次GetInstance时,SelFormInstance还是有值的。
请问什么原因?

调用窗口的代码:
SelectForm SelForm = SelectForm.GetInstance();
SelForm.ShowDialog()
/////////////////////////

C# code
public class SelectForm : System.Windows.Forms.Form{private static SelectForm SelFormInstance;public static void SelectForm GetInstance(){   if(SelFormInstance == null)   {       SelFormInstance = new SelectForm ();   }   return SelFormInstance ;}// 点确定时,窗口被CLOSE了。public void btnOK_Click(object sender, EventArgs e){   this.close();}}




[解决办法]
存在!!!
[解决办法]
这样好些,
C# code
public class SelectForm : System.Windows.Forms.Form{private static SelectForm SelFormInstance;public static void SelectForm GetInstance(){   if(SelFormInstance == null)   {       SelFormInstance = new SelectForm ();       SelFormInstance.Close += onclose;   }   return SelFormInstance ;}   static void onclose(object sender, EventArgs e)   {        SelFormInstance = null;   }// 点确定时,窗口被CLOSE了。public void btnOK_Click(object sender, EventArgs e){   this.close();}}
[解决办法]
this.Dispose();
[解决办法]
Main方法执行完了肯定就释放了.

你所谓的"存在",A窗体CLSOE后B窗体还可以访问么?
你自己试试在A窗体添加一个静态全局变量,看可不可以访问咯.

结论是---静态是首次调用后,便永远存在了(if ...Main.Run ...).

热点排行