원하는 작업 :루프 반복마다 작업 대기 중
나는 매 x 초마다 특정 작업 순서를 수행하는 타이머가있는 서비스를 가지고 있습니다. 어떤 경우에는 액션 중 하나를 기다려야합니다 (실제 시나리오에서는 채팅 서버를 통한 누군가의 답변입니다).
내가 작품 아래에 시도 무엇, 유일한 문제는 이 코드 조각 내용 : inital 대기 시간 후, 그냥 모든 두 번째 행을두고
string result = await WaitAsynchronouslyAsync();
만, 처음 기다려온됩니다
여기내 코드입니다 (이 내가 원하는 것이 아니다) :
static void Main(string[] args)
{
_timer.Start();
_timer.Interval = 1000;
_timer.Elapsed += _timer_Elapsed;
_timer.Enabled = true;
Console.Read();
}
static async void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
//this has to be done every second, regardless of the await below
Console.WriteLine(DateTime.Now + " - " + "Current iteration: " + GetNumber++);
//this needs to be awaited everytime (in real life this is waiting for a response from a user)
string result = await WaitAsynchronouslyAsync();
Console.WriteLine(result);
}
public static async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(5000);
var x = GetAsyncNumber ++;
return x.ToString();
}
기본적으로 내가 원하는 것을 await
기능입니다 ide _timer_Elapsed
메서드는 매초마다 (매 초마다 5 초 동안 대기해야 함) 발생하며 5 초 동안 한 번만 수행 한 다음 매 초마다 발생합니다. 내가 Task.WhenAll()
와 함께 몇 가지 것을 시도했지만 나는 정말로 그것을 이해하지 못하고 또한 내가 필요로하지 않습니다.
'await' *은 5 초 동안 기다리고 있습니다. 단지 5 개의 "동시"가 1 초 간격으로 흩어져 있기를 기다리고 있습니다. 따라서 처음 5 초가 지나면 각 결과가 각각 '대기'됩니다. 그 후 두 번째. –
@DecadeMoon 고맙습니다. 전에 그렇게 생각하지 않았습니다. 당신이 대답으로 게시하면 받아 들일 것입니다. – Thousand