Понимание (по общему признанию шатки) заключается в том, что вы должны иметь возможность добавлять любое количество делегатов в событие C#, и все они вызываются (в некотором неопределенном порядке). Но это не похоже на мой проект. У меня это сводилось к двум делегатам, добавляемых в активированном случае NSButton (это в MonoMac), например, так:Вызывается только один обработчик события C#
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?");
};
(а затем эта кнопка добавляется к окну, конечно). Когда я нажимаю на него, я вижу «Обработчик 1!». но я не вижу «Обработчик 2»? появится в консоли. Если я прокомментирую строки, которые добавляют обработчик 1, тогда срабатывает обработчик 2.
Он ведет себя так, как если бы только первый добавленный делегат работал, а любые последующие игнорируются. Но это бросает вызов всему, что я могу найти о том, как должны работать события в C#. Что я делаю не так?
Рассмотрим глядя на источник (предполагая, что вы можете получить один или использовать что-то вроде ILSpy декомпилировать) - в Servy (+1) ответ указывает, вы описали поведение по умолчанию, которые не нужных использовать управление. –
Да, я искал источник для источника, но еще не нашел его. Я подозреваю, что это действительно что-то особенное для NSButton, потому что практически тот же самый код, подключенный к событию TouchUpInside от UIButton на iOS, отлично работает. –
С некоторой помощью от Xamarin мне удалось обновить от MonoMac до Xamarin.Mac. Но это одно и то же. Все еще не удалось найти официальное слово или документацию о том, является ли это предполагаемым поведением. –