私は.NETのスレッディングに慣れていません。私は結果(辞書)を取得するためのメソッドを呼び出しているに実行しています非同期メソッドを呼び出す方法は?
public async Task MyTest() {
using (HttpClient httpClient = new HttpClient()) {
httpClient.BaseAddress = new Uri(_uri);
var response = await httpClient.GetAsync("API/GetData");
if(response!=null && response.IsSuccessStatusCode) {
var json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
}
}
}
問題:
私はansyncメソッドのMyTestを持っています。私のコードは私が歩いているときに、IsCompletedが完了してから、結果が私の残りの呼び出しから戻ってくる前に完了します。
この場合、スレッドを正しく使用するにはどうすればよいですか?
私のasyncメソッドの呼び出し方法。
public void GetTestData()
{
try
{
ARestService rest = new ARestService();
Task tsk = new Task(rest.MyTest);
if (tsk.IsCompleted)
{
var tst = "Done?";
}
}
catch(Exception ex)
{
string a = ex.Message;
}
}
暗闇の中を迷う代わりに、async/awaitのチュートリアルを読んでください。 –
[C#で同期メソッドから非同期メソッドを呼び出す方法?](http://stackoverflow.com/questions/9343594/how-to-call-asynchronous-method-from-synchronous-method-in-c) – meJustAndrew
それを呼び出して、結果を待ってください。それとも直接待ちます。 **。ReadAsStringAsync **はすでに非同期で、バックグラウンドで実行されるため、このメソッドは非同期です。このメソッドはあなたが待たなければならない既に実行中のタスクを返します。 –