У меня есть метод, в котором я не контролирую (предположим, что он из другой библиотеки):
private static void DoWork()
{
// I have no control over this method
while (true)
{
Console.WriteLine("Still working");
}
}
И я хочу подождать некоторое время (например, 20 секунд), и если задание не будет завершено за это время, чтобы остановить код.
Что я пробовал до сих пор:
Использование шаблона отмены задачи для меня не вариант, потому что я не контролирую метод, который я выполняю.
Использование только класса
Task
не вариант, потому что я не могу остановить выполнение задачи без использования токена отменыvar taskToWaitAndKill = Task.Factory.StartNew(DoWork); taskToWaitAndKill.Wait(20000); // 20 seconds // The task cannot be stopped (aborted) and still runs...
Использование класса
Thread
, его ожидание и прерывание - это не вариант, потому что мне нужно подождать все 20 секунд, прежде чем остановить код.var thread = new Thread(DoWork); thread.Start(); Thread.Sleep(20000); thread.Abort();
Итак, мой вопрос: есть ли способ в C# ждать фиксированное количество миллисекунд для выполнения кода, и если код завершится раньше, не ждать больше?