Потоковая обработка событий (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
    });
}

Просто создайте поток в вашем обработчике событий и выполните всю логику там. Лучше использовать пул потоков, чтобы число потоков было ограничено.

Другие вопросы по тегам