취소했다 : 나는 가끔 await task.ContinueWith
에 대한 호출에 A task was cancelled
을 얻을Task.WhenAny은 - 작업은 다음 코드에서
if (await Task.WhenAny(task, Task.Delay(100)) == task) {
success = true;
}
else {
details += "Timed out on SendGrid.";
await task.ContinueWith(s =>
{
LogError(s.Exception);
}, TaskContinuationOptions.OnlyOnFaulted);
}
. 내 목표는 여기서 task
100ms 이내에 완료되는지 확인하는 것입니다 - 그렇지 않으면 일부 로깅을 처리하려면 (이 특정 작업은 리소스 누수가 있으므로 시간 제한에 배치하여 해결하려면 노력하고있어). 여기에있는 지침에서 가져온 것입니다 : Debugging Task.WhenAny and Push Notifications
왜 이런 일이 벌어지고 있으며,이 예외가 발생하지 않도록하려면 어떻게해야합니까?
내가 완전히 명확하지 않다. 누출 된 API를 처리하려고 할 때 예외를 던지지 않고 처리하는 것이 어떻습니까? – SB2055
대답이 업데이트되었습니다. 작업 전에 'await'을 제거하십시오 .ContinueWith. – Evk
그렇다면 VS는 비동기 호출을 기다리지 않는다고 불평합니다. – SB2055