Вы когда-нибудь видели это на самом деле?
Конечно, это занимает долю секунды, чтобы бомбить мою машину после запуска:
using System;
using System.Threading;
class Program {
static void Main(string[] args) {
EventHandler anEvent = null;
var t1 = ThreadPool.QueueUserWorkItem((w) => {
for (; ; ) {
anEvent += Test;
anEvent -= Test;
}
});
var t2 = ThreadPool.QueueUserWorkItem((w) => {
for (; ; ) {
if (anEvent != null) anEvent(null, null);
}
});
Console.ReadLine();
}
static void Test(object sender, EventArgs e) { }
}
Это быстрый сбой из-за неуклонно быстрого зацикливания. В реальном приложении это может занять от одного дня до года. Вероятность того, что вы поймете это при отладке кода, очень мала. Если это произойдет, вы скажете "wtf? Давайте попробуем еще раз" и не получим его снова.