[C#] 기다리는 Thread.Sleep를 얻는 방법?

대기 / 수면 패러다임을 기반으로 네트워크 바인딩 응용 프로그램을 작성 중입니다.

때로는 연결 오류가 발생하며 경험상 잠시 기다렸다가 다시 작업을 다시 시도하면 비용이 발생합니다.

문제는 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);


답변