Windows Phone 7アプリケーションで非同期ではないサーバーメソッドを使用する方法はありますか? 私はデータのリストを持っています。 foreachループでは、データごとにサーバーに要求を送信しますが、呼び出しの順番で完了しません。どうやってやるの?Windows Phone 7で非同期メソッドを呼び出す
0
A
答えて
2
私はデータのリストを持っています。 foreachループでは、データごとにサーバーに要求を送信しますが、呼び出しの順番で完了しません。どうやってやるの?
さてあなたが効果的にがそれらを同期することができます - それは実際 foreachループであることを排除し、最初の応答が入ってくるとき、あなたは2番目のリクエストを送信するように代わりに適切な非同期コールバックを設定します他の要求がなくなるまで(Queue<T>
を使用して送信リクエストをキューに入れることができます)。
0
何かが動作しないと思われるため、同期方法に戻してはいけません。非同期の世界では、多くのメリットがあります。また、いくつかの危険性があります。キーは、これらの危険を回避する方法を知っている。 WebClientを使用して有害な影響を及ぼす例を以下に示します。クライアントが返された場合
foreach (var item in items)
{
WebClient client = new WebClient();
client.DownloadStringCompleted += (sender, args) =>
{
item.Stuff = args.Result;
};
client.OpenReadAsync(new Uri("http://mydomain.com/stuff"));
}
、item
は、クライアントの要求を「作成」と同じ項目であるという保証はありません。これは「変更された接近者へのアクセス」として知られています。これは単に、もう存在しないか、同じではないものを変更しようとしている可能性があることを意味します。これに対する適切なアプローチは、このようなようなforeachの中にあなたの項目をキャプチャすることです :
foreach (var item in items)
{
var internalItem = item;
WebClient client = new WebClient();
client.DownloadStringCompleted += (sender, args) =>
{
internalItem.Stuff = args.Result;
};
client.OpenReadAsync(new Uri("http://mydomain.com/stuff"));
}
これは、foreachのの範囲内で捕捉されているので、あなたが正しいアイテムを使用していることを保証します。
関連する問題
- 1. Windows Phone 7でwebserviceメソッドを呼び出す方法は?
- 2. 完了し、非同期メソッドをWindows Phone 7アプリケーション
- 3. 非同期コードから非同期メソッドを呼び出す
- 4. 非同期メソッドから同期メソッドを呼び出す
- 5. 非同期メソッドで非同期呼び出しスタック
- 6. UIスレッドで同期メソッドを非同期で呼び出す
- 7. 非同期メソッド呼び出しのテスト
- 8. Windows phone 7、silverlight - 非同期Webサービスを呼び出すときにEndpointNotFoundExceptionを捕捉する方法?
- 9. 非同期メソッドから非同期メソッドを呼び出す方法
- 10. 非同期に同期メソッドを呼び出す
- 11. Windows Phoneで非同期XMLを読む7
- 12. ウィンドウフォームアプリケーションで非同期メソッドを複数回呼び出す
- 13. Microsoft.Azure.NotificationHub - 同期メソッドの非同期呼び出し
- 14. 非同期メソッド(Web呼び出しを行う)を非同期にラップする
- 15. 非同期メソッドのsysncメソッドを呼び出しますか?
- 16. 別のメソッドから非同期メソッドを呼び出す方法
- 17. 非同期非同期/待機メソッドを再帰的に呼び出す
- 18. ASP.NET Webフォーム - 非同期的にWCF非同期メソッドを呼び出す方法
- 19. 非同期呼び出し
- 20. 非同期メソッドと同期メソッドを連続して呼び出します
- 21. 非同期メソッドが呼び出された同期メソッドを待機します
- 22. ElapsedEventHandler内から非同期メソッドを呼び出す方法
- 23. ViewModelから非同期メソッドを呼び出す
- 24. webserviceを非同期で呼び出す
- 25. 非同期メソッドを使用してXigniteを呼び出す
- 26. ConfigureAwait(false)でもWebAPIデッドロックで非同期メソッドを同期呼び出す
- 27. nopCommerceで非同期メソッドを呼び出す3.9スケジュールタスク
- 28. RubyでAjaxのような非同期メソッドを呼び出す
- 29. Typescript - シーケンス内で非同期メソッドを呼び出す
- 30. 非同期タスク - 明確ではないメソッドを呼び出す