스레드를 중지해야하지만 8 초 동안 잠자기하고 중단해야하는 경우 8 초 동안 계속 잠시 멈추고 중지됩니다.잠자는 동안 스레드를 중단하는 방법
3
A
답변
6
잠 들어있는 동안 스레드를 (안전하게) 중단 할 수 없습니다. 차단이 완료되면 즉시 중단 조건을 확인하고 그 시점에서 종료해야합니다.
차단 된 상태에서 스레드가 사용하는 리소스가 거의 없으므로 대부분의 경우 이러한 단점이 없습니다.
더 빨리 "중단"해야하는 경우 대신 다른 메커니즘을 사용하여 차단할 수 있습니다. 잠자는 것은 거의 올바른 옵션이 아닙니다. 대기 핸들은 동일한 기능을 제공하고 다른 스레드가 즉시 차단을 중지해야 함을 알리는 수단을 제공 할 수 있습니다.
2
사용은 AutoResetEvent timed Wait 대신 Sleep
, 그렇지 않으면 타이머가 만료, 당신은 대기중인 스레드를 중단하고자 할 때 Set를 사용하여 AutoResetEvent 신호.
12
사용하십시오 ManualResetEvent
:
ManualResetEvent mre=new ManualResetEvent(false);
//......
var signalled=mre.WaitOne(TimeSpan.FromSeconds(8));
if(!signalled)
{
//timeout occurred
}
(8 초까지 전에) :
mre.Set(); //unfreezes paused Thread and causes signalled==true
를하고 차단을 해제 스레드가 정상적으로 종료 할 수 있습니다. Thread.Abort
은 evil and should be avoided입니다.
+0
+1'잠'은 거의 필요하지 않습니다. –
5
System.Timers.Timer
클래스 사용을 고려하십시오. 필요한 경우 중지 할 수있는 타이머입니다.
당신은 좋은 지침
관련 문제
- 1. 잠자는 배우들?
- 2. 잠자는 VBA에서
- 3. 잠자는 SQL Server 데이터베이스를 워밍업하는 방법
- 4. ActionScript에서 실행을 중단하는 방법
- 5. 폭주하는 프로세스를 중단하는 방법
- 6. wget을 중단하는 방법?
- 7. 무한 루프를 설정하고 중단하는 방법. (자바 스레드)
- 8. Eclipse RCP 종료를 중단하는 방법
- 9. Python의 다른 스레드에서 socket.recv()를 중단하는 방법
- 10. 스트림을 읽는 동안 Python3 스레드를 올바르게 종료하는 방법
- 11. 내가 소켓과 스레드를 가지고있는 동안 Tomcat을 철저히 멈추는 방법
- 12. 5 초 동안 실행 한 후 비동기 스레드를 중지하는 방법
- 13. 수면 스레드를 깨울 방법이 있습니까?
- 14. 작업자 스레드를 사용하는 동안 return 문
- 15. 개체를 삭제하는 동안 스레드를 죽이는 중
- 16. 동기 호출에서 대기하는 동안 WCF가 메시지 펌핑을 중단하는 방법은 무엇입니까?
- 17. C# 스레드를 죽이는 방법?
- 18. 스레드를 잠자기 할 때 정확히 무엇이 발생합니까?
- 19. Silverlight에서 처리되지 않은 예외를 중단하는 방법
- 20. jQuery를 사용하여 양식 제출을 중단하는 방법
- 21. C# : 플래시 컨텐츠에서 미디어 스트리밍을 중단하는 방법?
- 22. RAM 및 웨이크 업을 일시 중단하는 방법
- 23. 파이썬에서 QT 스레드를 초기화하는 방법
- 24. Java에서 스레드를 닫는 방법?
- 25. 배경 스레드를 시작하는 방법?
- 26. forkjoinpool에 스레드를 추가하는 방법
- 27. pygtk에서 스레드를 사용하는 방법
- 28. 스레드를 "비우는"방법
- 29. 모니터에서 다른 스레드를 인터럽트하는 방법 스레드
- 30. 작업 완료 후 Java에서 스레드를 파괴하는 방법
here 중 또는 수면 후에 중단 여부를 중요합니까를 찾을 수 있습니까? –
깨어 났다고 생각 했습니까? 즉. 잠에서 빠져 나올 무언가를 사용해서? –
스레드를 중단하는 것은 * 정말 * 좋은 생각입니다. http://stackoverflow.com/questions/1559255/whats-wrong-with-using-thread-abort –