다음 함수는 다음과 같습니다. System.Threading.Thread.Sleep(); 밀리 초 단위로 스레드를 지연시키고 정수 값을 매개 변수로 사용하십시오. 마이크로 초 단위의 스레드 지연 방법이 있습니까? 또는 수면 기능이 부동 값을 취할 수 있습니까? 감사합니다.C#의 시간 지연
답변
아니요. 85122
에서 윌 딘을 인용 할 수없는 의미 '잠'(즉 포기 예약 된 CPU) 등 짧은 기간 동안. 짧은 시간 동안 지연하고 싶다면 적절한 고해상도 타이머 (예 : '성능 타이머')를 반복적으로 확인하고 우선 순위가 높은 것이 무엇이든지 미리 선회하지 않기를 바란다.
수면이 처음에는 밀리 초 정도 정확하지 않습니다. 제 생각에 해상도는 하드웨어에 따라 다르며 잠자기 시간은 일반적으로 약 20 밀리 초입니다. 이것은 Sleep과 관련이 있습니다. 현재 Sleep은 현재 스레드의 타임 슬라이스에 남을 수있는 부분을 실제로 해제합니다. 다른 스레드가 실행되도록합니다. 스레드가 다시 실행할 수있는 가장 빠른 시간은 한 스레드 스케줄러 타임 슬라이스가 경과 한 후에입니다. 따라서 해상도는 약 20ms입니다 (시스템의 타임 슬라이스가 20ms라고 가정).
Windows는 실시간 OS가 아니므로, 절전 모드와 다른 대기 모드는 완전히 결정적 일 수 없습니다.
응용 프로그램에 따라 대부분의 경우 절전 모드를 수행 한 다음 타이밍이 중요한 경우 잠깐 기다려야 할 수 있습니다. 또는 정확한 시간을 측정 할 수 있도록 구조를 다시 작성하십시오 (System.Diagnostics.Stopwatch 사용). 밀리 초 범위의 정확한 시간 동안 잠을 잘 수있는 것에 의존하지 않습니다.
first answer in this thread on MSDN도 매우 잘 설명합니다.
필자는 항상 입도가 ~ 55ms, 즉 18 틱/초라고 생각했습니다. – RedFilter
좋은 DOS 시대 (어쩌면 초기 Windows)였습니다. 1,193,180 Hz/2^16 –
음표를 정확한 시작 시간에 정확하게 시작해야하는 음악 프로그램을 작성해야했기 때문에 DirectX에서 고해상도 타이머를 사용했지만 내 응용 프로그램도 정상에 머물 렀습니다. hog cpu, 그래서 그것은 다음 행동을 언제 할 지 점검 할 수 있습니다.
OS가 응용 프로그램에 제어권을 반환 할 때를 정확히 알 수있는 방법이 없으므로 Thread.Sleep은 매우 나쁜 선택이 될 수 있으며 언급 한 바와 같이 가장 작은 시간 증가분은 10에서 50ms 사이에서 달라질 수 있습니다. 내 경험.
- 1. 로딩 후 지연 시간/지연 시간
- 2. JQuery와 시간 지연
- 3. OnKeyUp JavaScript 시간 지연?
- 4. cocos2d로 시간 지연 삽입
- 5. 안드로이드의 지연 시간
- 6. (MS-DOS) 시간 지연
- 7. 목적 C 시간 지연
- 8. 임의의 시간 지연
- 9. C의 시간 경과 교차로 #
- 10. EC2 대기 시간 및 일반적으로 지연 시간
- 11. 지연 라인에 대한 c의 원형 배열
- 12. Objective-C 클래스 시간 지연?
- 13. SQL Express와 대기 시간/지연
- 14. 시간 지연 및 모델보기 컨트롤러
- 15. AudioTrack 지연 : obtainBuffer 시간 초과되었습니다.
- 16. jQuery animation : 시간 지연 문제
- 17. Spring @Scheduled 주입 지연 시간
- 18. 시간 지연없는 링크 지연/지연로드?
- 19. R에서 새로운 시간 지연 변수 생성하기
- 20. C의 현재 마이크로 초 시간?
- 21. 시간 지연 후 패널을 표시 하시겠습니까?
- 22. Google지도 지오 코드에 시간 지연 추가
- 23. 전체 프로그램을 지연시키는 방법의 시간 지연
- 24. Jenkins/Hudson - 빌드 실행시 지연 시간 설정
- 25. 12 시간 지연 후 전달하는 Python sendmail()
- 26. 시간 지연 후 hide() (모달) 팝업 상자
- 27. 앵커 태그 지연 "지연"
- 28. 지연 컬렉션을 지연 초기화하지 못했습니다.
- 29. UDP 지연 가능성
- 30. 목표 C의 시간차 계산
짧은 기간 동안 잠을 자야하는 이유가 명시된 경우이 질문에 대한 의미있는 대답을 제공하는 것이 더 쉬울 것입니다. 아마도 Sleep() 호출을 필요로하지 않는 방식으로 필요한 것을 성취하기위한 다른 접근법이있을 수 있습니다. – LBushkin
[내가 스톱워치에 대한 다른 질문에서 말한 것을보십시오] (http://stackoverflow.com/questions/1631501/need-microsecond-delay-in-net-app-for-throttling-udp-multicast-transmission-rate/ 1631542 # 1631542) – Fredou
은 5 월의 질문이었습니다 :-p – Fredou