난 Await 없는 Task.Delay.Wait가 Thread.Sleep이랑 내부적으론 당연히 다르겠지만 유저레벨에선 차이가 없을 줄 알았는데

(대기의 정밀도는 차이를 체감하겠지만 논외로 치고)


의외로 Task.Wait가 현재 스레드가 대기하느라 완전히 차단되는게 아니었네

윈폼같이 현재 스레드에 메시지 루프가 있는 경우 '일부' 메시지만 '매우 느린속도로' 돌려주는데? ㅋㅋ 뭐지이거

실제로 WndProc 구현해놓고 체크해보면 메시지루프가 돌아가는걸 볼수있음


가령 Form을 만들고 Label.Text를 수정 한 후에 Show를 하고나서 


Thread.Sleep으로 대기하면 라벨이 하얗게 표시가 안되지만

Task.Delay.Wait로 대기하면 라벨이 표시됨.


마찬가지로 그 상태에서 비동기로 짜지 않고 그냥 쭈욱 Label.Text 추가로 수정 후에 Task.Delay.Wait로 대기하면 좀 넉넉한 시간 대기하면

폼은 계속 응답을 못하는 먹통상태지만 라벨이 실제로 UI에서 다 바뀜!

(클릭등의 메시지는 안돌려줘서 클릭이벤트를 발생시키진 못하더라고)


근데 메시지 펌핑 속도가 엄청 느려서 실질적으로 써먹을 여지는 없는듯

그래도 웃기네 뭐여이거

나만 몰랐음?


실질적으로 쓰잘데기는 없는거니까 뭐 몰라도 괜찮겠지만