c#멀티 스레드 이벤트 처리 : 모범 사례 토론
다중 스레드 환경에서 C#이벤트를 다룰 때, 일반적인 제안은 이벤트가 비어 있는지 확인하기 전에 스레드 관련 문제를 피하기 위해 이벤트를 복사하는 것입니다. 그러나 어떤 사람들은이 접근법의 필요성에 의문을 제기하고 이것이 단지 "미신 프로그래밍"모델이라고 믿습니다.
사건을 복사하는 이유
이벤트를 복사하는 목적은 다중 스레드 환경에서 이벤트에 액세스 할 때 잠재적 인 공기 인용 이상을 방지하는 것입니다. 스레드가 이벤트를 호출하려고 할 때 다른 스레드가 이벤트 처리 프로그램을 취소하면 이벤트 위안은 빈 참조를 인용 할 수 있다고 가정합니다.
그러나 Eric Lippert가 지적했듯이 이벤트 처리 프로그램 자체는 그러한 잠재적 문제에 대처하도록 설계되었습니다. 따라서 주요 초점은 사건이 비어있을 수있는 상황을 해결하는 것입니다.
사건의 공석
명시 적 빈 값을 사용하는 "표준 모드"가 가장 효과적인 방법은 아닙니다. 대안으로, 절대 제거되지 않을 초기화 이벤트를위한 처리 절차를 완전히 제거 할 수 있습니다. 이 방법은 번거로운 복제/검사 습관을 사용하지 않고 공석의 회피 문제를 보장하기 위해 이벤트 문에 간단한 작업을 추가하면됩니다.
C# 6 및 더 높은 버전의 예방 조치
C# 6 이상의 버전에서 Air Merger Computing ( "?.")은 간단한 처리 이벤트 통화를 제공했습니다. 다음 코드는 이벤트가 비어 있는지 효과적으로 확인하고 이벤트가 비어 있지 않은 경우에만 호출합니다.
결론
다중 스레드 환경의 이벤트를 처리하기위한 신중한 고려 사항. 이벤트를 복사 할 수 있지만 이벤트 처리 절차의 고유 한 견고성을 이해하고 대체 방법을 탐색하는 것이 중요합니다.
위 내용은 스레드 안전에 널 확인하기 전에 C# 이벤트를 복사합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!