gpt4 book ai didi

c# - 这个图案叫什么?软锁?

转载 作者:行者123 更新时间:2023-11-30 15:42:42 26 4
gpt4 key购买 nike

这是我有时必须编写的一些代码,主要与 UI 相关,并且总是与可能意外陷入无限循环的事件相关。

  public class MyClass
{
public event EventHandler MyEvent;
private bool IsHandlingEvent = false;

public MyClass()
{
MyEvent += new EventHandler(MyClass_MyEvent);
}

void MyClass_MyEvent(object sender, EventArgs e)
{
if (IsHandlingEvent) { return; }

IsHandlingEvent = true;
{
// Code goes here that handles the event, possibly invoking 'MyEvent' again.
// IsHandlingEvent flag is used to avoid redundant processing. What is this
// technique, or pattern called.
// ...
}
IsHandlingEvent = false;
}
}

如您所见,使用标志“IsHandlingEvent”用于防止冗余或可能的无限事件调用。虽然我并不总是这样做(因为明显的危险),但有时它是一个有用的解决方案,但我不知道如何调用它。由于没有更好的术语,我一直在使用“软锁”。真名是什么?

编辑:
是的,我知道它不是线程安全的,等等。这是一个名称问题,而不是设计问题。但既然值得讨论...
Code improvement: Better alternatives to this pattern?

最佳答案

已经有很多关于设计的说法(不是线程安全的等等)。

你似乎在问一个名字......不知道这是否广泛但我多次听到它被称为重入哨兵。

关于c# - 这个图案叫什么?软锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7259436/

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