我有一个下载字符串的方法,解析它然后将解析后的数据作为字符串[]返回。我现在想要更改该方法,因此它使用DownloadStringAsync,但我不知道如何将它作为函数返回该字符串数组。
由于获取的字符串是在DownloadStringAsyncCompleted方法中解析的,而不是在方法中解析的,因此调用它:S
答案 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
事件的方法中。