关于WINCE设备上,多级调用界面,close()导致闪退的问题

u014100815 2018-06-21 03:54:31
环境:在基于C#的PDA开发时,使用设备环境WINCE.
情境:在界面A调用界面B

B b=new B;
b.ShowDialog();

同样的在界面B使用同样的方法调用出界面C,

C c=new C;
c.b=this;//将对象B传到C,用于关掉B。
c.ShowDialog();

但是在界面C点击按钮后,要同时关掉C和B,返回第一个界面A。

this.Close();//关掉C
b.Close();//关掉B

这时在b.Close();这段代码在Windows的模拟环境下运行没问题,但是拿到正式的PDA WINCE环境下会导致设备程序闪退。

暂时解决方案:在PDA WINCE环境下运行时,将b.Close()替换成b.Dispose()即可正常运行,但同时,Windows模拟器上,开始闪退。
求大神解释这是为什么,另外有没有比较好的方法解决俩边不兼容的情况。谢谢。
目前查到的情况是和.net库的垃圾回收有关系,但是看不太懂。而且是俩者环境的回收机制不一样?
...全文
300 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lich2005 2021-01-22
  • 打赏
  • 举报
回复
试试用 .hide 隐藏窗体,而不是 .close 关窗体 。
  • 打赏
  • 举报
回复
楼主,你这个问题有解决吗?我也遇到这个问题了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧