实现 INotifyPropertyChanged 的​​模式?

2024-03-30

我已经看到以下用于实现 INotifyPropertyChanged 的​​模式

private void NotifyPropertyChanged(string propertyName)
{
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null)
    {
        handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

public event PropertyChangedEventHandler PropertyChanged;

有人可以向我解释一下这个的必要性吗var 处理程序 = PropertyChanged在检查 null 之前进行赋值与直接检查属性更改==空直接地?

Thanks


Eric Lippert 在这篇博客文章中详细解释了这一点:活动和比赛 http://blogs.msdn.com/b/ericlippert/archive/2009/04/29/events-and-races.aspx.

基本上,这个想法是避免竞争条件,以防另一个线程在您检查后取消订阅该事件的最后一个处理程序PropertyChanged != null,但在你实际调用之前PropertyChanged。如果您制作处理程序的本地副本,则不会发生这种情况(但您最终可能会调用刚刚取消订阅的处理程序)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现 INotifyPropertyChanged 的​​模式? 的相关文章

  • 从 .net 应用程序登录 OpenID 站点

    我一直在考虑编写一个小工具来登录 SO 并定期使用一些主题 当前信息更新我的个人资料信息 例如我最新的博客文章或我需要帮助的问题等 为了让它工作 我需要以某种方式从控制台应用程序登录到SO 是否有一个 Net 库可以简化使用原始 http
  • 如何使用AutoMapper按照类中定义的顺序映射对象?

    给定这两个对象 我使用非常不同的对象来更好地阐明 public class Car public string Brand get set public int Speed get set public class Apple public
  • 模拟对象 - 将所有方法声明为虚拟方法还是使用接口?

    与 Java 不同 net 中的方法默认不是虚拟的 为了使用大多数模拟对象框架 您要么必须将要在模拟上使用的方法标记为 真实 对象上的虚拟方法 要么必须有一个可以模拟被测试类将使用的接口接受代替执行 将每个方法标记为虚拟似乎是一种不好的形式
  • 使用 NServiceBus FileShareDataBus 时清理文件

    我在 NServiceBus 3 中使用 FileShareDataBus 是否支持清理数据总线文件 如果不是 实现此目的的最佳实践是什么 例如如何确保该文件不是错误队列中消息的一部分 鉴于不可能知道消息在错误队列中停留多长时间 我通常会在
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow
  • Windows 窗体中的标准 Windows 菜单栏

    我注意到添加了一个MenuStrip 来自工具箱 我的表单设计不会产生像许多本机 Windows 应用程序中那样的菜单栏 相反 我得到了一个像 Visual Studio 自己的菜单栏 没有任何样式设置MenuStrip似乎模仿了更常见的本
  • 将自定义应用程序设置存储在 XML 中

    请帮忙 我有这段代码 它是我的类来序列化 反序列化应用程序设置 XmlRoot EvaStartupData Serializable public class MyConfigClass public string ServerName
  • 变量替换为字符串

    我可以做类似的事情吗 s said s blah name blah 在 VB NET 中 写字越来越痛苦name said blah blah 在VB NET 14 对于VS2015 中 您可以使用字符串插值 https msdn mic
  • 在 C# 中的同一套接字上发送+接收数据

    我试图使用套接字 System Net Socket 甚至尝试过 TcpListener Client Etc 来在等待或已经发送数据时侦听数据 我做了以下事情 public byte bytesIn public byte bytesOu
  • Windows DPAPI - 如何处理熵?

    我正在使用 Windows DPAPI 来加密一些敏感数据 密码存储在注册表中 这一切都运行良好 但我想知道是否有人可以澄清我对 NET 中 可选 提供给 ProtectedData Protect 的 熵 字节的理解 熵 字节数组似乎类似
  • LINQ to Entities 区分大小写的比较

    这不是 LINQ to Entities 中区分大小写的比较 Thingies First t gt t Name ThingamaBob 如何使用 LINQ to Entities 实现区分大小写的比较 那是因为你正在使用LINQ 实体最
  • 何时使用 Windows Workflow Foundation? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有些事情仅通过手动 代码 更容易实现 但有些事情通过 WF 更容易实现 看起来 WF 可以用来创建 几乎 任何类型的算法 所以 理论上 我可以在
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个

随机推荐

  • 使用 ALS 训练时 Spark 给出 StackOverflowError

    当尝试在 Spark 的 MLLib 中使用 ALS 训练机器学习模型时 我不断收到 StackoverflowError 这是堆栈跟踪的一个小样本 Traceback most recent call last File Users us
  • 我们可以强制使用 Dart 垃圾收集器吗?

    我正在尝试模拟内存泄漏Streams 出于教育目的 但如果 GC 尚未运行 我无法确定内存是否真的泄漏 我可以在纯 Dart 测试中强制执行 GC 扫描吗 您可以通过 Dart DevTools Web GUI 来完成此操作 https d
  • 如何在android中创建液体布局

    我正在大学进行一个项目 我想知道如何在android中使用液体布局 以便不同的屏幕尺寸必须根据其分辨率看到应用程序 简而言之 我想创建一个应用程序 其布局在所有类型的屏幕上都是完美的 我知道如何在 PC 网站中用简单的 html css 创
  • Data.model.updateItem 不是函数 TypeError:Data.model.updateItem 不是函数

    使用 mongo 的 keystone js 中出现错误 Vehicle model updateItem 不是函数 TypeError Vehicle model updateItem 不是函数 目标是使用对象更新模型 就像我使用 ff
  • 让 TFS 将每个项目输出到其自己的目录的最佳方法是什么?

    我正在将大型代码库放入 Team Foundation Server 中 我希望构建过程能够创建我们项目的 准备部署 版本 我们执行此操作的正常方法是将每个项目的输出放在其自己的文件夹中 因此 例如 我们最终会得到类似的东西 C proje
  • R:创建具有节点属性的“statnet”网络

    我正在按照这里的示例使用 statnet 库http personal psu edu drh20 papers v24i09 pdf http personal psu edu drh20 papers v24i09 pdf 第一个示例展
  • 最小化 malloc() 调用量可以提高性能吗?

    考虑两个应用程序 一个 num 1 调用 malloc 多次 另一个 num 2 调用 malloc 几次 两个应用程序都分配same内存量 假设 100MB 对于哪个应用程序 下一个 malloc 调用会更快 1 还是 2 换句话说 ma
  • 如何为模板设置主题以进行编辑或添加特定内容类型的节点?

    我想为模板设置主题以进行编辑或添加特定内容类型的节点 例如 为了主题化所有内容类型表单 我使用该文件page node add edit tpl php 取决于我需要添加或编辑什么 但我没有找到自定义节点类型的模板名称 例如 产品 我只需要
  • 使用自定义选项时,Magento 1.7.0.1 将价格重置为 0

    我在用着Magento 1 7 0 1最近刚刚升级1 6 2 0 我有 SCP 扩展以及 MageWorx 高级自定义选项 我有一个可配置的产品 其中关联的简单产品具有自定义选项 如果您选择以下组合中的下拉菜单 您将看到带有可用自定义选项的
  • Laravel 将 .html 附加到路由(并且也可以在没有 .html 的情况下工作)

    添加 html 并使其双向工作的最简单方法是什么 example com about gt 有效 example com about html gt 有效 我可以将 html 添加到路线中 但如果没有 它就无法工作 Route get ab
  • 随时间反向传播

    有谁知道有一个可以有效实现时间反向传播的库吗 Java Python C VB NET F 中的任何一个 最好是最后一个 都可以 假设您已经在使用一些 BP 库 那么使用 BP 作为流程中的一个步骤来实现 BPTT 应该 TM 相当简单 B
  • 从数据库填充 JTree

    我有一个包含字段category id category name 和parent category id 的表 并且parent category id具有来自表示父子关系的category id的值 我没有任何固定的层次结构级别 它可能
  • 在 T-SQL 中透视数据

    我有一群人 我们称它们为A B C 我有一张表格 显示他们每个月的工资 PERSON MONTH PAID A JAN 10 A FEB 20 B JAN 10 B FEB 20 B SEP 30 C JAN 10 C JUNE 20 C
  • 将多个数组槽设置为一个值的更简单方法

    我正在编码C https en wikipedia org wiki C 我有以下代码 int array 30 array 9 1 array 5 1 array 14 1 array 8 2 array 15 2 array 23 2
  • java中最常用的运行时异常有哪些? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 作为一名希望完善自己的编程技能的java程序员 我经常遇到必须创建运行时异常的情况 我知道如果明智地使用的话 这是一种很好的做法 亲自 空指针异
  • Android 3.2 所有屏幕的布局相同

    我为我的应用程序设置了以下布局配置 小 正常 大 超大屏幕布局适用于 Android 1 5 至 3 1 在 android 3 2 中所有屏幕即 small 320 426密度为 160 normal 320 470密度为 160 lar
  • 删除 HTML5 Canvas 上的部分图像?

    我有一个 HTML5 Canvas 我正在使用KineticJS KonvaJS http konvajs github io 画布库 在空白画布上 我绘制了如下图所示的图像 现在我想创建一个圆形形状 可用于擦除图像的某些部分 图中的红色圆
  • COM_STMT_PREPARE 响应大小错误。收到 7.LARAVEL 错误

    我有一个使用 laravel 开发的博客 在我的本地电脑上 一切正常 但是当我将其上传到实时共享托管服务器时 它会抛出如下错误 ErrorException in MySqlConnector php line 124 Wrong COM
  • 使用 NLTK 的块解析器匹配单词

    NLTK的块解析器的正则表达式可以匹配POS标签 但是它们也可以匹配特定的单词吗 所以 假设我想用名词后跟动词 left 来对任何结构进行分块 将此模式称为 L 例如 句子 the DT dog NN left VB 应被分块为 S DT
  • 实现 INotifyPropertyChanged 的​​模式?

    我已经看到以下用于实现 INotifyPropertyChanged 的 模式 private void NotifyPropertyChanged string propertyName PropertyChangedEventHandl