我已经使用Web客户端方法在我的wp7应用程序中使用后台工作程序下载图像。我开始知道默认情况下通常在UI线程中运行的webclient方法。所以现在有一个混乱,即webclient在app中的backround线程或UI线程中运行,即使它在后台worker类中提到
答案 0 :(得分:1)
WebClient
请求的执行将在调用它的线程上运行,除非它在方法名称的末尾有一个Async后缀。 (例如DownloadData(Uri)
将在与调用相同的线程上运行。DownloadDataAsync(Uri)
将在新的后台线程上运行)
如果您使用BackgroundWorker
来调用WebClient请求,则不会在UI线程上执行(两者都使用Download
和DownloadAsync
方法),因为{{1首先在后台线程中运行它的代码。
编辑:看看你的标签,应该注意Silverlight(以及Windows Phone 7)只支持BackgroundWorker
电话的异步版本。
答案 1 :(得分:1)
Webclient异步调用将在单独的线程中运行,但从WP SDK 7.1开始,将在创建WebClient的线程上调用回调事件。 (在WP SDK 7.0中,事件总是在UI线程上调用)。