Я разработал приложение С#, которое активно использует события. Теперь это приложение иногда делает забавные вещи, которые я не могу понять или отслеживать по определенной причине, почему они должны произойти. Я считаю, что причиной этих прерывистых сбоев является какое-то concurrency или состояние гонки, которое я не ожидал.
Как точно обрабатываются события на С#? Если событие поднято, будет ли (а) часть кода, прикрепленная к этому событию, немедленно выполнить? Или событие (б) будет помещено в стек событий и будет выполняться всякий раз, когда .NET считает, что он подходит для выполнения, пока выполняется другой код?