Есть очень распространенная задача, с которой я снова сталкиваюсь.Я уже решил эту проблему пару раз, но теперь я ищу более " элегантный " способ - можете ли вы внести какой-то вклад?
Ситуация:
У меня есть метод, который я хотел бы запустить "полу асинхронный".Другими словами: запустите его и подождите определенное время x.Если метод не завершен к тому времени («истекло время ожидания»), я хочу продолжить мой код с некоторыми процедурами очистки.
Решения на данный момент:
- Использование AutoResetEvent (или ManualResetEvent) в сочетании с методом annonymus с использованием .WaitOne (x).
- Использование Thread / BackgroundWorker в сочетании с таймером.Если таймер запускает свой обработчик до того, как поток останавливает его, время ожидания истекает.
Оба аппроксайма работают нормально, но я думаю, что есть лучший способ с 4.0.
Предложения?