- private static Form2 instance;
- public static Form2 Instance
- {
- get
- {
- if (instance == null || instance.IsDisposed)
- {
- instance = new Form2();
- }
- return instance;
- }
- }
复制代码- private void button1_Click(object sender, EventArgs e)
- {
- Form2 f = Form2.Instance;
- f.Show();
- }
复制代码 instance是一个静态的字段,它是在访问后就一直存在内存中。
你的按钮单击后,对静态字段赋值了(一个Form2窗体实例),该字段的指向的Form2窗体对象的地址给变量f一份,f调用了show方法。当窗体f被关闭(instance指向的那个对象在内存中被销毁。)
当再次点击按钮,调用instance指向的对象,对象已经被销毁了而你没判断对象是否被释放了,此时就会报错。 |