gpt4 book ai didi

delphi - 以这种方式删除和重新分配事件安全吗?如果没有,为什么?

转载 作者:行者123 更新时间:2023-12-03 15:21:46 25 4
gpt4 key购买 nike

A.Event1 := nil;
A.Event2 := nil;
try
...
finally
A.Event1 := MyEvent1;
A.Event2 := MyEvent2;
end;

会不会出什么问题?

编辑:

我接受了 Barry 的回答,因为它完全回答了我的问题,但根据具体情况,Vegar 的回答也是正确的,遗憾的是我不能同时接受。

最佳答案

这听起来像是我以前见过的一场事件噩梦:-)

我通常不会删除事件,而是设置一个在事件中检查的标志。我经常使用整数而不是 bool 值,以便在一次处理中可以多次设置相同的标志。

类似这样的事情:

procedure TMyObject.Traverse;
begin
inc(FTraverseFlag);
try
...
finally
dec(FTracerseFlag);
end;
end;

procedure TMyObject.OnBefore( ... );
begin
if FTraverseFlag > 0 then
exit;
...
end;

我想这可以很容易地实现线程安全,以解决 Barrys 的担忧。

关于delphi - 以这种方式删除和重新分配事件安全吗?如果没有,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/323556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com