我有两个班级
Parser.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 ?
答案 0 :(得分:2)
这是通过使用Task Parallel Library
来完成的您可以将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);
或者如果您不想阻止当前线程,可以使用continuation:
var p = new Parser();
var parseTask = p.Parse();
parseTask.ContinueWith(task => someMethod(task.Result));
这一切都假设.Net 4.5。