我希望在C#的Windows应用程序中创建自己的事件系统。为此,我编写了以下类:
internal class EventManager
{
private static List<EventRecord> s_listEvents = new List<EventRecord>();
public static void AddEvent(EventRecord record)
{
record.EventDate = DateTime.Now;
s_listEvents.Add(record);
}
public static List<EventRecord> GetRecordsByDate(DateTime date)
{
var r = (from l in s_listEvents
where l.EventDate >= date
select l).ToList<EventRecord>();
return r;
}
}
我希望确认EventManager类是线程安全的,因为我的应用程序将同时创建数百个线程。所有线程很可能会使用此类来生成事件。并且当不同线程调用AddEvent函数时,GetRecordsByDate函数可能会从类外部被调用。
简单地说,您能否告诉我这个设计是否适用于多线程窗口应用程序?如果这不是线程安全的,那么我该如何使我的类或其成员线程安全?我应该使用同步对象锁定整个EventManager类,还是应该使用读写锁来锁定我的s_listEvents静态成员?