0

我已经使用 web 客户端方法在我的 wp7 应用程序中使用后台工作程序下载图像。我开始知道 webclient 方法通常默认在 UI 线程中运行。所以现在有一个困惑,即 webclient 是在应用程序的后台线程还是 UI 线程中运行,即使它在后台工作类中被提及

4

2 回答 2

1

请求的执行WebClient将在调用它的线程上运行,除非它的方法名称末尾有 Async 后缀。(例如DownloadData(Uri)将在与调用相同的线程上DownloadDataAsync(Uri)运行。将在新的后台线程上运行)

如果您使用 aBackgroundWorker来调用您的 WebClient 请求,它将不会在 UI 线程上执行(都使用DownloadandDownloadAsync方法),因为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 回答