Webクライアントを使用してリクエストパラメータをサーバに送信し、リクエストに応じて応答します。しかし、私がウェブクライアントのリクエストを送信しようとするたびに私が直面する問題は、リクエストを送信中にインターネットが切断されると、アプリケーションがハングすることになります。場合によってはアプリケーションがクラッシュすることがあります。 私のコードスニペットは以下の通りです。インターネットを切断して実行中にウェブクライアントの要求がハングアップする場合
WebClient webClient=new WebClient()
userData = webClient.UploadValues(URL, "POST", parameters);
`
インターネットが切断された場合にその行を実行すると、アプリケーションがハングアップします。
あなたは答えがありますが、非同期メソッド '.UploadValuesAsync'に切り替えて、プロセスからUIを切り離し、操作の進行状況に関する通知を受け取ることもお勧めします[UploadProgressChangedイベント](https:///msdn.microsoft.com/en-us/library/system.net.webclient.uploadprogresschanged(v=vs.110).aspx)。 [NetworkAvailabilityChangedイベント](https://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkchange.networkavailabilitychanged.aspx)も参照してください。利用可能なネットワーク接続がない場合に通知を受信するイベントを登録します。 – Jimi
@ジミあなたは私に'UploadValuesAsync 'の使用を提案します。それは仕事ですが、何も返されず、私はバイト形式で応答します。レスポンスに応じて、さまざまなタスクを実行します。そのような状況に対処してください。おかげさまで –
WebClientイベント[UploadValuesCompletedEventHandler](https://docs.microsoft.com/en-us/dotnet/api/system.net.uploadvaluescompletedeventhandler?view=netframework-4.7)を登録します。アップロードが完了すると、[UploadValuesCompletedEventArgs](https://docs.microsoft.com/en-us/dotnet/api/system.net.uploadvaluescompletedeventargs?view=netframework-4.7) 'e.Result'には、サーバーをバイト配列で表します。また、 'e.Error'と' e.Cancelled'(今回は2 "L")を返します。 – Jimi