.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가 완료되었음을 확인할 수 있습니다.
이 경우 어떻게 제대로 스레드를 사용합니까?
비동기 메서드를 호출하는 내 메서드입니다.
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;
}
}
어둠 속을 헤매는 대신 비동기식/대기식에 대한 자습서를 읽어보십시오. –
가능한 [C#에서 동기 메서드에서 비동기 메서드를 호출하는 방법?] (http://stackoverflow.com/questions/9343594/how-to-call-asynchronous-method-from-synchronous-method-in-c) – meJustAndrew
그냥 호출하고 결과를 기다리고 있습니다. 아니면 직접 기다려야합니다. 이 메서드는 ** 비동기입니다. ** ReadAsStringAsync **는 이미 비동기이며 백그라운드에서 실행됩니다. 이 메소드는 당신이 기다려야 만하는 이미 실행중인 태스크를 리턴한다. –