일부 코드가 실행되지 않는 이유를 이해하는 데 어려움을 겪고 있습니다.F # handling 작업 취소
type WebSocketListener with
member x.AsyncAcceptWebSocket = async {
try
let! client = Async.AwaitTask <| x.AcceptWebSocketAsync Async.DefaultCancellationToken
if(not (isNull client)) then
return Some client
else
return None
with
| :? System.Threading.Tasks.TaskCanceledException ->
| :? AggregateException ->
return None
}
내가 취소 토큰이 취소 될 때 AcceptSocketAsync
가 TaskCanceledException
을 던져 알고 :
None
을 반환하는 것입니다.
그러나 결코 발생하지 않습니다. 마지막으로 return None
에 중단 점을 넣거나 심지어 if
표현식에 중단 점을 넣으면 취소 토큰이 취소되었을 때 멈추지 않습니다. 그리고 나는 그것이 취소하기 전에 다른 클라이언트가 연결되면 작동하고 중단 점에서 멈추기 때문에 Async.AwaitTask
에서 기다리고 있음을 알고 있습니다.
나는 조금 잃어버린 이유는 무엇입니까?
'AggregateException'을 잡으려고 했습니까? – svick
좋은 점이 있지만 시도해 보았지만 여전히 효과가 없었습니다. 나는 AggregateException을 추가하기 위해 질문을 업데이트했다. – vtortola