Установить таймаут ожидания выполнения функции из DLL - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую знатоков и интересующихся.

Суть проблемы:

Есть довольно громоздкая библиотека от стороннего разработчика для работы с внешним устройством (через USB подключаемым). Библиотека рабочая, но с багами. Иногда (по непонятным причинам) во время выполнения в моём коде библиотечной функции типа
int Result = FuncFromDLL(void);
происходит "зависание". Программа не валится, а просто впадает в неприемлио длительное ожидание на этой строчке.

Вопрос:

Есть ли в C# (или С++) "Нечто" что позволяло бы бороться с таими проблемами. Напрример что-то вроде
TryDoBeforeTimeOut(int MilliSeconds)
{
  Result = FuncFromDLL(void);
}
catch{....}
Тоесть перед выполнением некоторой функции, включается обратный отсчёт таймера, и если по истечению времени результат не был получен, то происходит "аварийное" прерывание выполнения функции. Что-то аналогичное WatchDog для микроконтроллеров. Но может есть для этой проблеммы и более нетривиальное но практичное решение? Казалось бы проблемма то должна быть довольно распространённой... Если на C# такого хоть убей нет, а в других языках есть, то на крайний случай можно обёртку сделать и на другом языке, так что ответ может быть не только на C# Ждём идей )

Решение задачи: «Установить таймаут ожидания выполнения функции из DLL»

textual
Листинг программы
if (task.Wait(timeout))
     Console.WriteLine("Task completed with result: {0}", task.Result);
else
     Console.WriteLine("Task timeout expired");

ИИ поможет Вам:


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

Оцени полезность:

9   голосов , оценка 3.556 из 5