这个模式叫什么?软锁?下面是我必须编写的一些代码,主要是与UI相关的东西,并且总是有一个事件可以意外结束无限循环。公共类MyClass{公共事件EventHandlerMyEvent;私人布尔IsHandlingEvent=假;publicMyClass(){MyEvent+=newEventHandler(MyClass_MyEvent);}voidMyClass_MyEvent(objectsender,EventArgse){if(IsHandlingEvent;E}{returntrue;{//此处处理事件的代码可能再次调用“MyEvent”。//IsHandlingEvent标志用于避免冗余处理。这是什么//技术或调用的模式。//...}IsHandlingEvent=false;}}如您所见,使用标志“IsHandlingEvent”用于防止冗余或可能无限的事件调用。虽然我不总是这样做(因为明显的危险),有时它是一个有用的解决方案,但我不知道该怎么称呼它。由于缺乏更好的术语,我一直在使用“软锁”。什么是真名?编辑:是的,我知道它不是线程安全的等等。这是一个名称问题,而不是设计问题。但是因为它值得讨论......代码改进:这种模式的更好替代方案?关于设计已经说了很多(不是线程安全等)。你似乎在问一个名字......不知道这是否普遍,但我已经多次听到它作为忏悔的哨兵。我认为这在某种程度上与信号量有关,即:使用布尔变量来查看某些内容。编辑:正如问题评论中所指出的,应该避免这种“模式”,因为它不是线程安全的、异常安全的并且表现良好。以上就是C#学习教程:这个模式叫什么?软锁?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
