Если событие возникает, будет ли часть кода, прикрепленная к этому событию, выполняться немедленно?
Ну да и нет.События являются многоадресными делегатами, поэтому к событию может быть привязано ноль, одна или несколько «частей кода».В сценарии, где их много, ясно, что один из них должен идти первым, а один - вторым.Тот, который идет вторым, не выполняется сразу после возникновения события;оно выполняется сразу же после того, как первый обработчик событий завершится нормально.
будет ли событие помещаться в стек событий и выполняться всякий раз, когда .NET сочтет его подходящим для выполнения, в то время как другой код выполняется в это время?
Предположим, ваше приложение плохо написано и в нем висит пользовательский интерфейс.Пока пользовательский интерфейс завис, пользователь нажимает кнопку 1 и кнопку 2. Поскольку приложение зависает, ничего видимого не происходит.События для кнопки 1 и кнопки 2, которые были нажаты, не запускаются.Но Windows создала очередь сообщений и включила в нее тот факт, что кнопка 1 и кнопка 2 имеют ожидающие щелчки, которые необходимо обработать, когда приложение самоизменяется.Когда цикл сообщений прокачивается, срабатывает событие нажатия кнопки 1.Когда он завершает свою работу, цикл сообщений перекачивается снова и запускается событие нажатия кнопки 2.
Так что да, в этом смысле события помещаются в очередь и выполняются позже, но это не так, когда .NETсчитает это подходящим ";это когда поток, который обрабатывает очередь сообщений, снова начинает обрабатывать очередь сообщений.Здесь нет таинственной политики Windows, управляющей вашим кодом.