Установить таймаут ожидания выполнения функции из DLL - C#
Формулировка задачи:
Приветствую знатоков и интересующихся.
происходит "зависание". Программа не валится, а просто впадает в неприемлио длительное ожидание на этой строчке.
Тоесть перед выполнением некоторой функции, включается обратный отсчёт таймера, и если по истечению времени результат не был получен, то происходит "аварийное" прерывание выполнения функции.
Что-то аналогичное WatchDog для микроконтроллеров. Но может есть для этой проблеммы и более нетривиальное но практичное решение? Казалось бы проблемма то должна быть довольно распространённой...
Если на C# такого хоть убей нет, а в других языках есть, то на крайний случай можно обёртку сделать и на другом языке, так что ответ может быть не только на C#
Ждём идей )
Суть проблемы:
Есть довольно громоздкая библиотека от стороннего разработчика для работы с внешним устройством (через USB подключаемым). Библиотека рабочая, но с багами. Иногда (по непонятным причинам) во время выполнения в моём коде библиотечной функции типа
Листинг программы
- int Result = FuncFromDLL(void);
Вопрос:
Есть ли в C# (или С++) "Нечто" что позволяло бы бороться с таими проблемами. Напрример что-то вроде
Листинг программы
- TryDoBeforeTimeOut(int MilliSeconds)
- {
- Result = FuncFromDLL(void);
- }
- catch{....}
Решение задачи: «Установить таймаут ожидания выполнения функции из DLL»
textual
Листинг программы
- if (task.Wait(timeout))
- Console.WriteLine("Task completed with result: {0}", task.Result);
- else
- Console.WriteLine("Task timeout expired");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д