Мое (по общему признанию шаткое) понимание состоит в том, что вы должны иметь возможность добавлять любое количество делегатов к событию C#, и все они вызываются (в каком-то неопределенном порядке). Но, похоже, это не так в моем проекте. У меня это сводится к двум делегатам, добавленным к событию Activated NSButton (это в MonoMac), например:
nsButton = new NSButton(new System.Drawing.RectangleF(0, 0, 100, 100));
nsButton.StringValue = "Click me!";
nsButton.Activated += delegate(object sender, EventArgs e) {
Console.WriteLine("Handler 1!");
};
nsButton.Activated += delegate(object sender, EventArgs e) {
Console.WriteLine("Handler 2?");
};
(а затем эта кнопка, конечно, добавляется в окно). Когда я нажимаю на нее, я вижу "Handler 1!" но я не вижу "Handler 2?" появляются в консоли. Если я закомментирую строки, добавляющие обработчик 1, то сработает обработчик 2.
Он ведет себя так, как будто работает только первый добавленный делегат, а все последующие игнорируются. Но это бросает вызов всему, что я могу найти о том, как должны работать события в C#. Что я делаю неправильно?