На тему навел System.Threading.Timer - использую для фонового потока. Время от времени проводит операции по "зачистке" данных.
Так вот, Timer при срабатывании берет поток из пула и в нем что-то там делает.
С другой стороны, для обработки события я организую новый поток
Thread t1;
t1 = new Thread(Delegat);
t1.Start();
Но событие, само по себе, подобно Timer, сдается (по крайней мере нигде это явно не написано, или не увидел, что это написано) уже берет поток из пула. Получается только для того, чтобы запустить новый поток t1.
И почему бы не использовать для выполнения программы сразу поток из пула. - экономия очевидна, в т.ч. во времени.
С другой стороны t1 (созданный нами поток) легко контролируется-управляется, а из пула д.б.для этого дополнительные усилия.
Вот на выходных чешу репу - что использовать, и в каких случаях что лучше применять.
В общем вопрос философский, и существенно не влияет, но интересен сам по себе.
"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"