title author date CreateTime categories
win10 uwp 如何判断一个对象被移除
lindexi
2018-08-10 19:16:50 +0800
2018-2-13 17:23:3 +0800
Win10 UWP

有时候需要知道某个元素是否已经被移除,在优化内存的时候,有时候无法判断一个元素是否在某个地方被引用,就需要判断对象设置空时是否被回收。
本文告诉大家一个简单的方法判断对象是否被移除。

在 C# 是不需要自己手工释放对象,微软会判断对象是否被引用,如果一个对象被引用了,那么就不会移除这个对象。

但是有一种引用是弱引用,虽然他引用了对象,但是垃圾回收是不会因为对象有弱引用就不移除他。所以可以使用弱引用判断对象是否被移除。

例如有一个对象 A ,这个对象在很多地方都使用,但是不确定在某个移除 A 的地方之后,是否A会被移除,于是可以使用下面的代码来判断A是否被移除。

        private object Foo { set; get; } = new object();

        private WeakReference<object> FooReference { set; get; }

        private void Button_OnClick(object sender, RoutedEventArgs e)
{
FooReference = new WeakReference<object>(Foo);
Foo = null;
GC.Collect(); var timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 5);
timer.Tick += (o, args) =>
{
Console.WriteLine(FooReference.TryGetTarget(out var t));
};
timer.Start();
}

点击按钮可以看到,输出 false ,也就是 Foo 被移除了

上面的代码使用的就是添加一个WeakReference引用对象,然后在判断对象是否被移除时,尝试获得对象,如果不能获得,那么就是对象被移除。

2018-8-10-win10-uwp-如何判断一个对象被移除的更多相关文章

  1. win10 uwp 如何判断一个对象被移除

    原文:win10 uwp 如何判断一个对象被移除 有时候需要知道某个元素是否已经被移除,在优化内存的时候,有时候无法判断一个元素是否在某个地方被引用,就需要判断对象设置空时是否被回收. 本文告诉大家一 ...

  2. win10 uwp 列表模板选择器

    本文主要讲ListView等列表可以根据内容不同,使用不同模板的列表模板选择器,DataTemplateSelector. 如果在 UWP 需要定义某些列的显示和其他列不同,或者某些行的显示和其他行不 ...

  3. win10 uwp 商业游戏 1.2.1

    上一个游戏已经告诉大家如何写多个游戏,现在继续写这个无聊的游戏 希望大家在看这篇文章之前先看win10 uwp 商业游戏,在这个文章告诉了大家如何创建游戏. 修改数值 可以从上一篇的博客的游戏看到升级 ...

  4. win10 uwp 商业游戏

    本文告诉大家去做一个商业游戏,游戏很简单,几乎没有什么技术 游戏的开始,需要添加框架库,于是引用我自己写的库. 首先是创建一个启动页面,这个页面是显示启动的. 在显示启动的时候,是需要加载游戏需要使用 ...

  5. win10 uwp 线程池

    原文:win10 uwp 线程池 如果大家有开发 WPF 或以前的程序,大概知道线程池不是 UWP 创造的,实际上在很多技术都用到线程池. 为什么需要线程池,他是什么?如何在 UWP 使用线程池,本文 ...

  6. win10 uwp 使用 Microsoft.Graph 发送邮件

    在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...

  7. win10 uwp 商业游戏 1.1.5

    本文是在win10 uwp 商业游戏 基础上继续开发,添加一些无聊的游戏 因为在发布几个月,下载量很少,小伙伴说游戏就玩不到几分钟就不想玩,于是我就想加入其他游戏 下面我来告诉大家如何在游戏中添加多个 ...

  8. Win10 UWP开发系列:实现Master/Detail布局

    在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...

  9. Win10 UWP开发实现Bing翻译

    微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...

随机推荐

  1. 使用electron-vue搭建桌面应用程序项目

    vue-cli+electron一种新的脚手架(vue-electron)vue-electron主要业务逻辑都放在src下的renderer文件夹内,和之前的vue-cli搭建项目流程没有任何区别 ...

  2. PyQt5显示日期选择框,获取日期保存文件

    一.UI显示选择日期,保存到文件 import sys,os from PyQt5 import QtCore from PyQt5.QtGui import * from PyQt5.QtWidge ...

  3. POJ2186-Tarjan-kosaraju-缩点

    目录 目录 思路: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 题意:传送门  原题目描述在最下面.  A认为B优秀,B认为C优秀,则A认为C优秀.问有多少个人被其他所有人 ...

  4. nginx按日分割日志

    #!/bin/bash #按日切割nginx日志并压缩,加入crontab每天0:00切割 #作者:fafu_li #时间: source /etc/profile #加载系统环境变量 source ...

  5. tensorflow run()和 eval()

    eval()只能用于tf.Tensor类对象,也就是有输出的Operation.对于没有输出的Operation, 可以用.run()或者Session.run() 所以我们训练的时候,对于优化器只能 ...

  6. gdb常用功能

    1,调试core dump 文件    ulimit -c 1024:设置coredump文件大小为1024,否则默认不会生成coredump文件    gdb -c core:gdb调试该cored ...

  7. uoj139 【UER #4】被删除的黑白树

    题目 不难发现有一个暴力\(dp\) 设\(dp[x][l]\)表示\(x\)点子树内所有叶子节点到\(x\)的路径上都有\(l\)和黑点时最多能染多个黑点 转移就是 \[dp[x][l]=\max( ...

  8. WPF datagrid AutoGenerateColumns隐藏部分列

    原文:WPF datagrid AutoGenerateColumns隐藏部分列 <DataGrid x:Name="gridWC" ItemsSource="{B ...

  9. go 数据类型和操作符

    文件名&关键字&标识符 1. 所有go源码以 .go结尾 2. 标识符以字母或者下划线开头,大小写敏感:add, Add, _add _是特殊标识符,用来忽略结果 3. 保留关键字 G ...

  10. 2019-5-8-WPF-绑定命令在-MVVM-的-CanExecute-和-Execute-在按钮点击都没触发可能的原因...

    title author date CreateTime categories WPF 绑定命令在 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因 lindexi ...