2

アプリケーションのセットアップ


  1. HttpClientを使用して、Windows フォーム アプリケーションから REST サービスへの複数の非同期 POST 要求を作成しています。
  2. 一方、応答は REST サービスから取得され、アプリケーションは[処理中... ]ウィンドウに[キャンセル] ボタンが表示されます。
  3. ここで、ユーザーが [キャンセル] ボタンを押すと、進行中のリクエストをキャンセルするためにHttpClient.CancelPendingRequestsを使用しています。
  4. HttpClient.CancelPendingRequestsを使用すると、PostAsyncメソッド呼び出しでTaskCanceledExceptionがスローされます。

クエリ

  1. HttpClient.CancelPendingRequestsの呼び出しが原因でTaskCanceledExceptionがスローされ、他の理由 (タイムアウトなど) が原因ではないことを検出する方法はありますか?
  2. 同様のキャンセル機能を実現する他の方法はありますか?

ありがとう


4

1 に答える 1

3

例外をキャッチし、TaskCanceledException.CancellationToken.IsCancellationRequestedプロパティを確認します。true の場合は、明示的に要求されたキャンセルとタイムアウトであることがかなり確信で​​きます。

そうは言っても、このソリューションには注意して、いくつかのテストを行ってください。しばらく前に発見したように、ビットを設定する必要があると思われる場合がありますが、そうではありません。

于 2016-01-30T17:18:25.303 に答える