WPF page资源释放问题

zzzj-ovo 2018-07-12 09:06:41
前提:WPF项目,主界面利用按钮切换不同的page,容器是frame。以下是代码:
private void btnShift1_Click(object sender, RoutedEventArgs e)
{
Page1 page = new Page1();
famTest.Navigate(page);
}
private void btnShift2_Click(object sender, RoutedEventArgs e)
{
Page2 page = new Page2();
famTest.Navigate(page);
}
场景:page1和page2切换,page1里面有个线程每5秒触发一个messagebox,切换多次之后同时弹出多个messagebox,就是说每次切换后page1里面的线程不释放,这个后来找到切换page的时候触发unloaded事件可以判断线程存在的话就可以关闭线程。
但是是不是每次切换page的内存(比如page赋值的变量)是不是都没有释放啊,就是说我无限次点击切换page事件后,内存会一直增大?还是说WPF自动释放了除了线程之外的内存呢?
如果没释放,请问怎么在切换page的时候清除内存呢?就是每次点击只占用一个page的内存
...全文
3872 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
生财 2019-03-30
  • 打赏
  • 举报
回复
Page1 page = new Page1();
famTest.Navigate(page); 不要每次都New 把它放到一个静态变量里
IgoAheadNow 2018-11-30
  • 打赏
  • 举报
回复
实现思路可以考虑如下:
1、在Page页面的Unload事件里停止线程;在Page页面显示出来后开启线程;
2、Page1和Page2页面切换的时候不要每次使用New 改为工厂方法返回一个页面,不用每次都生成新的对象。

另外一种思路是,先获取当前显示的页面,待切换页面完成后,调用之前显示的页面的Dispose方法,强制进行资源释放。

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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