Потоковая обработка событий (C#)
У меня есть вопрос об обработке событий с C#. Я слушаю события, которые бросает класс А. Теперь, когда событие брошено, выполняется метод, который что-то делает. Этот метод иногда должен ждать ответов от источников данных или аналогичных.
Я думаю, что обработка событий является синхронной, поэтому одно за другим событие будет обрабатываться. Возможно ли сделать это асинхронным? Я имею в виду, что когда метод выполняется, но должен ждать ответа от источника данных, может быть обработано другое событие?
заранее спасибо
Себастьян
2 ответа
Я предполагаю, что вы можете порождать код, который должен ждать в новом потоке. Это приведет к тому, что обработчик событий не будет блокировать поток, в котором генерируются события, так что он может вызвать следующий обработчик событий в строке. (Образец C# 3.5)
private void MyPotentiallyLongRunningEventHandler(object sender, SomeEventArgs e)
{
ThreadPool.QueueUserWorkItem((state) => {
// do something that potentially takes time
// do something to update state somewhere with the new data
});
}
Просто создайте поток в вашем обработчике событий и выполните всю логику там. Лучше использовать пул потоков, чтобы число потоков было ограничено.