wp7アプリでバックグラウンドワーカーを使用して画像をダウンロードするために、Webクライアントメソッドを使用しました。私は、webclientメソッドが通常デフォルトでUIスレッドで実行されることを知りました。そのため、バックグラウンドワーカークラス内で言及されている場合でも、WebクライアントがアプリのバックラウンドスレッドまたはUIスレッドで実行されるという混乱が生じています。
質問する
370 次
2 に答える
1
リクエストの実行は、WebClient
メソッド名の末尾にAsyncサフィックスが付いていない限り、呼び出されたスレッドで実行されます。(たとえばDownloadData(Uri)
、呼び出しと同じスレッドでDownloadDataAsync(Uri)
実行されます。新しいバックグラウンドスレッドで実行されます)
を使用しBackgroundWorker
てWebClientリクエストを呼び出す場合、そもそもバックグラウンドスレッドでコードが実行されているため、UIスレッド(Download
とDownloadAsync
メソッドの両方を使用)では実行されません。BackgroundWorker
WebClient
編集:タグを見ると、Silverlight(およびWindows Phone 7)は非同期バージョンの通話のみをサポートしていることに注意してください。
于 2012-08-01T08:10:57.510 に答える
1
Webclient非同期呼び出しは別のスレッドで実行されますが、WP SDK 7.1以降、コールバックイベントはWebClientが作成されたスレッドで呼び出されます。(WP SDK 7.0では、イベントは常にUIスレッドで呼び出されていました)。
于 2012-08-01T18:46:37.000 に答える