0

wp7アプリでバックグラウンドワーカーを使用して画像をダウンロードするために、Webクライアントメソッドを使用しました。私は、webclientメソッドが通常デフォルトでUIスレッドで実行されることを知りました。そのため、バックグラウンドワーカークラス内で言及されている場合でも、WebクライアントがアプリのバックラウンドスレッドまたはUIスレッドで実行されるという混乱が生じています。

4

2 に答える 2

1

リクエストの実行は、WebClientメソッド名の末尾にAsyncサフィックスが付いていない限り、呼び出されたスレッドで実行されます。(たとえばDownloadData(Uri)、呼び出しと同じスレッドでDownloadDataAsync(Uri)実行されます。新しいバックグラウンドスレッドで実行されます)

を使用しBackgroundWorkerてWebClientリクエストを呼び出す場合、そもそもバックグラウンドスレッドでコードが実行されているため、UIスレッド(DownloadDownloadAsyncメソッドの両方を使用)では実行されません。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 に答える