Thread.Sleep과 Task.Delay는 C#에서 시간 동안 실행을 지연시키는 두 가지 다른 방법입니다. 각각의 동작 방식과 사용 사례에 대해 알아보겠습니다.
Thread.Sleep(동기)
- Thread.Sleep 메소드는 현재 실행 중인 스레드를 지정된 시간 동안 차단(block)합니다.
- 이 메소드는 주어진 시간 동안 스레드를 정지시켜 시스템 리소스를 점유하게 만듭니다.
- Thread.Sleep 는 주로 레거시 코드에서 찾을 수 있으며, 새로운 개발에서는 권장되지 않습니다.
Task.Delay(비동기)
- Task.Delay 메소드는 비동기적으로 지연을 만들어 실행 흐름을 차단하지 않습니다.
- 이 메소드는 주어진 시간 동안 대기 상태로 전환되며, 다른 작업이 실행될 수 있도록 합니다.
- Task.Delay 는 비동기 프로그래밍의 콘텍스트에서 권장되며, 특히 C# 5.0이상에서 async와 await 키워드와 함께 사용됩니다.
사용 사례
- Thread.Sleep은 주로 디버깅 또는 레거시 코드에서 찾을 수 있습니다. 그러나 새로운 개발에서는 성능과 리소스 관리 문제로 인해 권장되지 않습니다.
- Task.Delay는 비동기 작업의 일부로 일부 지연을 만들거나, 네트워크 통신이나 파일 I/O와 같은 비동기 작업을 수행할 때 유용합니다. 비동기 방식으로 작동하기 때문에, 시스템 리소스를 보다 효율적으로 활용할 수 있습니다.
이러한 차이점으로 인해, Task.Delay는 모던 C# 애플리케이션에서 Thread.Sleep보다 더 나은 선택이 될 수 있습니다.
반응형
'Programming > C/C++/C#' 카테고리의 다른 글
C# Enum Flags 예제 (0) | 2018.02.05 |
---|---|
C# 호출된 위치 로그 남기기(CallStackLog) (0) | 2018.02.02 |
C# 경로 가져오는 방법 (0) | 2018.01.29 |
C# 키워드 정리 (0) | 2018.01.15 |
C# WndProc 메시지 받기. (0) | 2017.11.24 |
C# 동기화 처리 (0) | 2017.09.23 |
C# 성능 측정 (0) | 2017.09.05 |
C++ 에서 동적 메모리의 할당(malloc, new)과 해제(free,delete) 원리 (0) | 2017.08.30 |