包WebClient.DownloadStringAsync函数返回一个字符串

本文关键字:一个 字符串 WebClient DownloadStringAsync 函数 返回 | 更新日期: 2023-09-27 18:13:40

我有一个方法下载字符串,解析它,然后返回解析后的数据作为字符串[]。我现在想改变那个方法,让它使用DownloadStringAsync,但我不知道如何让它作为一个函数返回那个字符串数组。

由于获取的字符串是在DownloadStringAsyncCompleted方法中解析的,而不是在调用它的方法中:S

包WebClient.DownloadStringAsync函数返回一个字符串

您不能无缝地将同步代码转换为异步代码。在你的例子中,你应该返回void并接受另一个Action (callback)类型的参数,你应该在DownloadStringAsyncCompleted中调用它来表示数据已经到来。

c# 5将在这方面提供一些帮助,但异步仍然是异步的。

你应该改变你的方法来触发通过DownloadStringAsync()异步下载的开始。然后将解析它并返回string[]的代码移动到处理DownloadStringAsyncCompleted事件的方法中。

尝试WebClient。它不是异步的。

WebClient client = new WebClient ();
string reply = client.DownloadString (address);
Console.WriteLine (reply);

如果你想使用DownloadStringAsync方法,你需要等到DownloadStringAsyncCompleted事件触发。还是用sync方法。如果你真的想让结果继续,那么使用sync方法。