Есть некий класс, который имеет событие OnDataReceived. Класс запускает thread, который работает с устройством и по приходу данных должен генерировать это событие.
Данные идут большим потоком, следовательно события должны генерироваться довольно часто, но обработчики этого события могут быть долгими. Как корректно решить эту проблему, чтобы опрос устройства не останавливался?
Вижу 2 варианта:
1) предположить что обработчики событий достаточно быстрые и запускать их как обычно из контекста потока, в котором выполняется опрос устройства. То есть пока все обработчики не отработают, данные с устройства не принимаются — не айс.
2) запускать обработчики событий через ThreadPool.QueueUserWorkItem или Task. сразу возникает вопрос — если второе событие будет запущено когда еще не отработали обработчики первого — необходима синхронизация?
Возможно есть более правильное и элегантное решение?