用colse在线程里好像还存在的说....
解决方案 »
- 通过paint事件在picturebox上画图的问题
- 如何清除在A和B之间的内容
- 没办法,接着问
- 怎样实现客户端下载服务器端的数据库中的表
- ##############################在主线程里使用lock等待加锁的时候,为什么连其它线程也全被阻塞了?
- 关于类的实例化问题……(菜鸟问题50分)
- IrisSkin2.dll改名
- c#关于从剪贴板保存gif图片总是静态问题;
- 有没有象mfc中的command management 一样的办法,实现toolbar和menu事件对应起来?
- 望高手不吝赐教,错误1935,在vs.NET安装到最后一刻的时候出现了
- 怎样取值
- C#如何实现VB.net中的switch函数那种根据变量的值返回不同的结果
看你是在编什么咯~~
Dispose()释放资源,Close()——不…
由运行库自行管理.直接用Dispose()的话, 好像没有close()好.只是对窗体来说
会自动先调用Close();
不是都调用dispose(true or false)吗?
我一般先调用Close(),最后在finally中调用 Dispose()
这个方法是调用 Dispose 时的实际执行代码,其 disposing 参数值为 true。
protected override void Dispose(bool disposing)
{ Form form1;
Form[] array1;
int num1;
int num2;
MainMenu menu1;
MainMenu menu2;
MainMenu menu3;
if (disposing)
{
this.calledOnLoad = false;
this.calledMakeVisible = false;
this.calledCreateControl = false;
this.ResetSecurityTip(0);
if (base.Properties.ContainsObject(Form.PropAcceptButton))
{
base.Properties.SetObject(Form.PropAcceptButton, null);
}
if (base.Properties.ContainsObject(Form.PropCancelButton))
{
base.Properties.SetObject(Form.PropCancelButton, null);
}
if (base.Properties.ContainsObject(Form.PropDefaultButton))
{
base.Properties.SetObject(Form.PropDefaultButton, null);
}
if (base.Properties.ContainsObject(Form.PropActiveMdiChild))
{
base.Properties.SetObject(Form.PropActiveMdiChild, null);
}
form1 = ((Form) base.Properties.GetObject(Form.PropOwner));
if (form1 != null)
{
form1.RemoveOwnedForm(this);
base.Properties.SetObject(Form.PropOwner, null);
}
array1 = ((Form[]) base.Properties.GetObject(Form.PropOwnedForms));
num1 = base.Properties.GetInteger(Form.PropOwnedFormsCount);
for (num2 = (num1 - 1); (num2 >= 0); num2 = (num2 - 1))
{
if (array1[num2] != null)
{
array1[num2].Dispose();
}
}
base.Dispose(disposing);
this.ctlClient = null;
menu1 = this.Menu;
if (menu1 != null)
{
menu1.CleanupMenuItemsHashtable();
menu1.form = null;
base.Properties.SetObject(Form.PropMainMenu, null);
}
if (base.Properties.GetObject(Form.PropCurMenu) != null)
{
base.Properties.SetObject(Form.PropCurMenu, null);
}
this.MenuChanged(0, null);
menu2 = ((MainMenu) base.Properties.GetObject(Form.PropDummyMenu));
if (menu2 != null)
{
menu2.Dispose();
base.Properties.SetObject(Form.PropDummyMenu, null);
}
menu3 = ((MainMenu) base.Properties.GetObject(Form.PropMergedMenu));
if (menu3 == null)
{
goto L_020E;
}
if ((menu3.form == this) || (menu3.form == null))
{
menu3.CleanupMenuItemsHashtable();
menu3.Dispose();
}
base.Properties.SetObject(Form.PropMergedMenu, null);
return;
}
base.Dispose(disposing);
L_020E:
return;
}// 这个方法是 Close 方法执行的实际代码
public void Close()
{ object[] array1;
if (base.GetState(262144))
{
array1 = new object[1];
array1[0] = "Close";
throw new InvalidOperationException(SR.GetString("ClosingWhileCreatingHandle", array1));
}
if (base.IsHandleCreated)
{
base.SendMessage(16, 0, 0);
}
} 贴出此代码,仅供研究。我也得不出一个绝对的结论。
我通常的做法,仅调用 Close。