구현이 스레드로부터 안전합니까? 내가 뭘 놓치지 않으면? 어딘가에서 volatile
개의 키워드를 사용해야합니까? 또는 OnProcessingCompleted
방법의 어딘가에 잠금 장치가 있습니까? 그렇다면 어디에서? C# : 스레드로부터 안전한 이벤트
public abstract class ProcessBase : IProcess
{
private readonly object completedEventLock = new object();
private event EventHandler<ProcessCompletedEventArgs> ProcessCompleted;
event EventHandler<ProcessCompletedEventArgs> IProcess.ProcessCompleted
{
add
{
lock (completedEventLock)
ProcessCompleted += value;
}
remove
{
lock (completedEventLock)
ProcessCompleted -= value;
}
}
protected void OnProcessingCompleted(ProcessCompletedEventArgs e)
{
EventHandler<ProcessCompletedEventArgs> handler = ProcessCompleted;
if (handler != null)
handler(this, e);
}
}
참고 :이 추상 기본 클래스이기 때문에 개인 이벤트 및 명시 적 인터페이스 물건을 왜 이유가있다. 그리고 그것으로부터 상속받은 클래스는 그 이벤트에 직접적으로 어떤 것도해서는 안됩니다.
(댓글에 대한 답글) –