现有一个非常奇怪的问题,望有哪位达人解答一下, 在一个主窗口中打开一个模式对话框A,再在模式对话框A中新打开另一个模式对话框B,在B的关闭按钮函数中,我调用了this.Dispose(true),希望可以在关闭B后释放资源,但是发生了意想不到的问题,当关闭B的时候,最底层的主窗口会消失掉,最小化到了任务栏中,而只能看到A窗口(一次如果不能重现,多试几次一定会重现的),如果我将那句this.Dispose(true),去掉就不会有这样的问题了,非常困惑,不知道为什么?
解决方案 »
- asp.net里的gridviw更新草组
- 有没有C#写的类似lex、yacc的工具啊?
- 求:c#里有没有类似JAVA存值功能的类.[内详]
- 急! 如何把浮点数转换为16进制
- DateTimePicker控件获取值的问题
- 100分紧急求助:listview控件在detail视图下如何将某一列能显示bmp图片?(WinForm程序)
- C#初学者应该怎样学习C#
- FTP文件上传后,服务器如何返回处理结果给客户端
- 什么类型的文件才可以加入到资源文件中去啊?
- DataGrid的格子有两行文字,为什么失去焦点的时候,只显示一行??谢谢
- xsl 实现多文档输出的问题??
- 求救高手啊,获取不到cookie的密码?
int i = 10000;
string s = string.Empty;
while (i > 0)
{
s += "fsajfldjfljsljfdljjsajfdlasj";
i--;
})
,以及打开另一个模式对话框B,B中再放一个button,点击函数是:this.Dispose(true);this.close();完成之后,我们运行程序,不断的敲击空格键,重复非常多次后,应该会出现这几个窗口都被最小化到任务栏的现象,我想这个问题应该和垃圾收集很有关系,可就是还没弄明白。
我感觉问题出在你的循环上.
你启动了很耗费时间的循环,在循环没有完成的过程中,你不短敲空格键,这个时候
主进程还在进行循环,操作系统会记录下你敲键盘的动作.循环完成之后才进行操作.
所以就出现的你说的现象.
这个现象跟模式窗体,和dispose都没有关系.
你把中间那个循环另开一个线程就不会出现你说的问题了.
不知道这样说,能不能帮到你.
如果方便楼主可以把你的代码贴出来看看~private void B_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
try
{
this.Close();
}
catch
{
}
finally
{
if (this !=null)
{
this.Dispose(true);
}
}
}