И не должен
в методе лови
Сделай cancellationTorenSource и передавай его в таску, а таску жди через .GetAwaiter().GetResult()
Кем не ловится? Уверен? По-моему, ты врёшь!
Не ловится, потому что ты не ожидаешь таск в try блоке.
А что будет после таймаута? Что будет делать метод?
try { var delayTask = Task.Delay(5000); var resultTask = Task.Run(() => Method(new object(), new object())); await Task.WhenAny(delayTask, resultTask); bool timedOut = false; object result = null; if (delayTask.Status == TaskStatus.RanToCompletion && resultTask.Status != TaskStatus.RanToCompletion) { timedOut = true; } else { result = await resultTask; } } catch (Exception e) { Console.WriteLine(e); throw; }
Тебе здесь больше подойдут потоки, а не таски, чтобы можно сделать abort при таймауте
Обсуждают сегодня