Tag: 订阅

.NET事件 – 阻止订阅者订阅事件

假设我有一个暴露事件的“处理器”接口 – OnProcess。 通常,实现者进行处理。 因此,我可以安全地订阅此事件,并确保它将被解雇。 但是一个处理器不进行处理 – 因此我想阻止订户对其进行处理。 我能这样做吗? 换句话说,在下面的代码中,我希望最后一行抛出exception: var emptyProcessor = new EmptyProcessor(); emptyProcessor.OnProcess += event_handler; // This line should throw an exception.

取消订阅从未订阅过的活动是否安全?

例如,如果这些代码: Button button1 = new Button(); // … button1.Click -= button1_Clicked; 执行之前: button1.Click += button1_Clicked; 我没有发现任何错误或exception,但我想知道这里是否有任何缺点。 如果它是安全的,为什么允许取消订阅从未订阅过的活动?

当一个事件有多个订阅者时,如何获得每个订阅者的返回值?

代码如下所示: 时钟: public class Clock { public event Func SecondChange; public void Run() { for (var i = 0; i < 20; i++) { Thread.Sleep(1000); if (SecondChange != null) { //how do I get return value for each subscriber? Console.WriteLine(SecondChange(DateTime.Now)); } } } } DisplayClock: public class DisplayClock { public static bool TimeHasChanged(DateTime now) { […]