MSND에서 내 질문에 대한 답변을 찾을 수 없습니다. Timer 클래스는 Elapsed 이벤트에 가입 한 모든 처리기가 동일한 스레드 풀 스레드에서 실행되도록 보장합니까? 그렇다면 Elapsed 이벤트에 추가 된 순서대로 실행됩니까? 감사System.Timers.Timer 이벤트 처리기 스레딩 모드
1
A
답변
1
지금까지 내가 볼 수 있듯이, Elapsed
이벤트 핸들러는 모두 같은 스레드에 있는지 확인하는 유일한 방법은, 그래서 일반적으로 폼의 컨트롤 또는 무언가에 (타이머의 SynchronizingObject
속성을 설정하는 것입니다 Elapsed 이벤트는 UI 스레드에서 처리됩니다.) 그렇지 않으면 이벤트는 스레드 풀 스레드에서 처리됩니다. 즉, 매번 동일한 스레드 일 수 있지만 거의 확실하지는 않습니다.
참조 : http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx
발사 이벤트 핸들러의 순서는 당신이 추가 된 순서대로 될 것 아마,하지만이 보장되지 않고 향후 변경 될 수 있습니다. 디자인이 특정 순서로 실행되는 이벤트에 의존하는 경우 디자인을 변경해야합니다.
관련 문제
- 1. 정적 이벤트 처리기, 스레딩 및 기타
- 2. 완료된 스레드의 System.Timers.Timer 이벤트
- 3. 이벤트 + 처리기
- 4. 두 번 추가되는 C# 이벤트 처리기
- 5. "디자인 모드"전 처리기 지시문
- 6. 매개 변수가있는 이벤트 처리기
- 7. 이벤트 처리기 구독
- 8. Silverlight : 이벤트 처리기 문제
- 9. 처리기 정의 연결된 이벤트
- 10. 기본 이벤트 처리기 질문
- 11. 이벤트 처리기 사용
- 12. 이벤트 처리기 문제
- 13. Elixir 이벤트 처리기
- 14. VB.NET의 공통 이벤트 처리기
- 15. BackgroundWorker 이벤트 처리기
- 16. VBScript의 COM 이벤트 처리기
- 17. MsftDiscFormat2Data 이벤트 처리기
- 18. 서버 컨트롤 이벤트 처리기?
- 19. 이벤트 처리기 관리/목록보기?
- 20. 사용자 지정 이벤트 처리기
- 21. 다른 개체의 이벤트 처리기
- 22. ListView의 동적 이벤트 처리기?
- 23. 이벤트 처리기 javascript
- 24. JavaScript 이벤트 처리기
- 25. C# 이벤트 처리기
- 26. 익명 이벤트 처리기
- 27. 브라우저 OnLoad 이벤트 처리기
- 28. 최대 절전 모드 세션 스레딩
- 29. System.Timers.Timer lifecycle
- 30. 바인딩 처리기 Ajax Sys.Component.propertyChanged 이벤트
여기에서 대답을 찾은 것 같습니다. http://msdn.microsoft.com/en-us/library/awbftdfh.aspx 이벤트에 여러 구독자가있는 경우 이벤트 처리기가 동시에 호출됩니다. 이벤트가 발생했습니다. 핸들러는 단일 스레드 풀 스레드에서 차례로 실행됩니다. –
@ user315454 : 그렇습니다. 이벤트가 발생할 때마다 모든 구독 처리기가 동일한 스레드에서 차례로 호출된다는 의미입니다. 그러나 다음에 이벤트가 발생하면 거의 이전과 다른 스레드로 진행됩니다. 이 시점에서 이것은 대부분 의미 론적 일 수 있지만, Timer 클래스는 모든 스레드가 동일한 스레드에서 호출된다는 것을 보증하지 않습니다.이 스레드는 이벤트에서 이벤트로 변경 될 수 있기 때문에 변경 될 수 있습니다. – MusiGenesis
그러나 나는 그것에 대해 전혀 신경 쓰지 않는다고 생각합니다. :) 당신은 당신의 구체적인 문제에 대한 답을 찾은 것 같습니다. – MusiGenesis