0

我有两节课

解析器.cs:

....
client.DownloadStringCompleted += (sender, e) =>
{
    Result = JsonConvert.DeserializeObject<Flight>(e.Result);
};

client.DownloadStringAsync(new Uri(uri));

和 Main.cs:

...
var p = new Parser();
p.Parse();

someMethod(p.Result);

当 Parser.cs 的 DownloadStringAsync 完成后,我如何运行someMethod ?

4

1 回答 1

2

这是通过使用任务并行库来完成的

您可以将 Parse 方法更改为:

Task<string> ParseAsync()
{
    return client.DownloadStringTaskAsync(new Uri(uri));
}

然后你的主要方法:

var p = new Parser();
var parseTask = p.Parse();

//This will block the current thread until Result is available
someMethod(parseTask.Result); 

或者如果你不想阻塞当前线程,你可以使用延续:

var p = new Parser(); 
var parseTask = p.Parse(); 
parseTask.ContinueWith(task => someMethod(task.Result));

所有这些都假设 .Net 4.5。

于 2013-06-07T00:40:46.793 回答