加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 以这种方式删除和重新分配事件是否安全?如果没有,为

发布时间:2020-12-15 09:35:28 所属栏目:大数据 来源:网络整理
导读:A.Event1 := nil;A.Event2 := nil;try ...finally A.Event1 := MyEvent1; A.Event2 := MyEvent2;end; 可能出现问题吗? 编辑: 我已经接受了巴里的答案,因为它完全回答了我的问题,但根据情景,韦加的答案也是正确的,遗憾的是我不能同时接受. 解决方法 它完全
A.Event1 := nil;
A.Event2 := nil;
try
  ...
finally
  A.Event1 := MyEvent1;
  A.Event2 := MyEvent2;
end;

可能出现问题吗?

编辑:

我已经接受了巴里的答案,因为它完全回答了我的问题,但根据情景,韦加的答案也是正确的,遗憾的是我不能同时接受.

解决方法

它完全取决于标记为“……”的代码中发生的情况.如果它,例如启动后台线程并尝试在执行继续进入finally块后调用Event1或Event2,您可能会得到意外的结果.

如果代码完全是单线程的,那么是的,当代码在try和finally之间时,不应该触发Event1和Event2.

但是,这确实假设Event1和Event2属性(所有Delphi事件都是方法指针类型的属性)不会在其setter中执行异常操作.病态恶意事件设置器可以松开一个方法指针,并且仍然可以调用它,即使在您稍后使用’nil’作为值调用setter之后也是如此.

但这将是非常不寻常的行为.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读