例:
私のアプリケーションは HTTP 接続を行っています。ホーム ボタン (アプリの高速切り替え) を使用してホーム画面に切り替えると、アプリケーションが行っていた接続がキャンセルされます。
なんで?
回避する方法はありますか?
例:
私のアプリケーションは HTTP 接続を行っています。ホーム ボタン (アプリの高速切り替え) を使用してホーム画面に切り替えると、アプリケーションが行っていた接続がキャンセルされます。
なんで?
回避する方法はありますか?
残念ながら (見方によっては、バッテリー寿命を節約できるので幸いです)、ホーム ボタンを押してアプリを非アクティブ化すると、ほとんどの HTTP 接続がキャンセルされ、ほとんどの操作が中断されます。このブログ投稿の次のコードは、アプリの非アクティブ化 (トゥームストーン) によって HttpWebRequest がキャンセルされたかどうかを確認します。
try
{
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyResultAsync);
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.RequestCanceled)
MessageBox.Show("Looks like your request was interrupted by tombstoning");
else
{
using (HttpWebResponse response = (HttpWebResponse)e.Response)
{
MessageBox.Show("I got an http error of: " + response.StatusCode.ToString());
}
}
}
バックグラウンドでファイルをダウンロード/アップロードしたい場合は、この記事をご覧ください。より複雑なタイプのネットワーク操作については、運が悪いです。
いいえ、これを回避する方法はありません。Fast-App-Switch を実行すると、すべての Web リクエストがキャンセルされます。
キャンセルされた場合は、アプリに戻ったときに発生する例外でこれを検出できます。
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.RequestCanceled)
{
// Retry request
}
else
{
// Handle other exception
}
}
アプリケーションに (手動で) リクエストをキャンセルする他の方法がある場合は、それらも考慮する必要があります。