我已经使用 web 客户端方法在我的 wp7 应用程序中使用后台工作程序下载图像。我开始知道 webclient 方法通常默认在 UI 线程中运行。所以现在有一个困惑,即 webclient 是在应用程序的后台线程还是 UI 线程中运行,即使它在后台工作类中被提及
问问题
370 次
2 回答
1
请求的执行WebClient
将在调用它的线程上运行,除非它的方法名称末尾有 Async 后缀。(例如DownloadData(Uri)
将在与调用相同的线程上DownloadDataAsync(Uri)
运行。将在新的后台线程上运行)
如果您使用 aBackgroundWorker
来调用您的 WebClient 请求,它将不会在 UI 线程上执行(都使用Download
andDownloadAsync
方法),因为BackgroundWorker
首先已经在后台线程中运行了它的代码。
编辑:查看您的标签,应该注意的是 Silverlight(以及 Windows Phone 7)仅支持WebClient
调用的异步版本。
于 2012-08-01T08:10:57.510 回答
1
Webclient 异步调用将在单独的线程中运行,但从 WP SDK 7.1 开始,将在创建 WebClient 的线程上调用回调事件。(在 WP SDK 7.0 中,事件总是在 UI 线程上调用)。
于 2012-08-01T18:46:37.000 回答