线程安全以下的实现?如果不是我错过了什么?我应该在哪里有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);
}
}
注:我之所以有私人事件和显式接口的东西,是因为它是一个抽象基类。而从它继承的类不应该直接对该事件做任何事情。添加类包装,使其更加清晰=)
(回复评论) – 2009-06-24 12:48:31