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

时间:2011-11-07 20:36:01

标签: c# webclient

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

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

3 个答案:

答案 0 :(得分:2)

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

C#5对此有所帮助,但异步仍然是异步。

答案 1 :(得分:0)

尝试WebClient.DownloadString它不是异步的。

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

如果要使用DownloadStringAsync方法,则需要等到DownloadStringAsyncCompleted事件被触发。再次它将是同步方法。如果你真的想要一个结果继续,那么使用同步方法。

答案 2 :(得分:0)

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