대기 / 수면 패러다임을 기반으로 네트워크 바인딩 응용 프로그램을 작성 중입니다.
때로는 연결 오류가 발생하며 경험상 잠시 기다렸다가 다시 작업을 다시 시도하면 비용이 발생합니다.
문제는 Thread.Sleep 또는 다른 유사한 차단 작업을 await / async에서 사용하면 호출자 스레드의 모든 활동을 차단한다는 것입니다.
Thread.Sleep (10000)을 다음과 같은 효과를 얻기 위해 대체해야 할 것
await Thread.SleepAsync(10000)
?
최신 정보
추가 스레드를 만들지 않고이 작업을 수행하는 답변을 선호합니다
답변
새로운 스레드 시작을 제안하는 다른 답변은 나쁜 생각입니다. 아무 것도 할 필요가 없습니다. async
/ 지점의 일부는 응용 프로그램에 필요한 스레드 수 await
를 줄이는 것입니다.
대신 사용해야 Task.Delay
하는 없습니다 새 스레드를 필요로하며,이 목적을 위해 정밀하게 설계되었습니다 :
// Execution of the async method will continue one second later, but without
// blocking.
await Task.Delay(1000);