我目前正在使用一个事件来触发一组委托,并且我需要能够防止剩余的委托从另一个委托中触发。
以下代码复制了该场景...
//nonsense class
public class Foo {
public string Bar { get; set; }
}
//nonsense event.
public event Action<Foo> SomeEvent;
void BindAndFire() {
//wire it up.
SomeEvent += (foo) => {
var a = DateTime.Now.Millisecond % 2;
foo.Bar = (a == 0) ? "Hooray" : "Boo";
};
SomeEvent += (foo) => {
if(foo.Bar == "Boo") {
SomeEvent.CANCEL_THE_REST(); //what do I do here?
}
};
SomeEvent += (foo) => {
foo.Bar += ", you made it!";
};
//fire the event.
SomeEvent(new Foo());
}
鉴于上述情况,我需要做什么?我 100% 可以更改为操作列表或其他内容,但似乎我应该能够停止执行后续事件。
注意:显示的代码只是复制问题,而不是我的程序结构。实际的程序正在处理传入的网络事件,并有一个在它们上运行的任意委托列表......我不想为一个问题发布整个事情。
...也许我只是想以他们不打算使用的方式使用它们,我很好,我只是希望我只需要学习一些关于事件的新事物C#。
感谢您的时间!