전화를 걸고 응답을 평가하는 다음 코드가 있습니다. 응답이 보류 중이면 2 초 후에 다시 전화를 걸려고합니다.특정 시간이 지나면 비동기 메서드 호출
여기서 "대기 2 초"를 수행하는 방법이나 동기식 방식으로 작동하는 타이머를 사용하는 방법을 모른다.
PCL 프로젝트의 제약으로 인해 제한됩니다.
private async Task<Response> ExecuteTask(Request request)
{
var response = await GetResponse();
switch(response.Status)
{
case ResponseStatus.Pending:
//wait 2 seconds
response = await ExecuteTask(request);
}
return response;
}
다음 코드는 정상입니까?
에서System.Threading.Timer timer;
private async Task<Response> ExecuteTask(Request request)
{
var response = await GetResponse();
switch(response.Status)
{
case ResponseStatus.Pending:
timer = new System.Threading.Timer(async obj =>
{
response = await ExecuteTask(request);
}, null, 1000, System.Threading.Timeout.Infinite);
}
return response;
}
사용 기다려,하지만 당신은 Task.Delay을 기다리고 있었다 비동기? 기본적으로 Thread.Sleep과 동일한 작업 (내 지식). – BradleyDotNET
일종의 재시도 작업을 설정하려고하는 것 같습니다. 비동기로 구현하는 방법에 대한 아이디어를 얻으려면이 대답의 맨 아래를보고 싶을 것입니다. http://stackoverflow.com/a/10494424/1181408 – cgotberg
타이밍을 수행하는 방법을 모르겠습니다. 2 초 동안 무엇을 사용합니까? 타이머? – alitaleg