0

私は2つのクラスを持っています

パーサー.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

これは、Task Parallel Libraryを使用して実現されます。

Parse メソッドを次のように変更できます。

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

次に、 Main メソッド:

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 に答える