我想用 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 类是线程安全的。因为我要在我的应用程序中同时创建数百个线程。所有线程很可能会使用这个类来生成事件。并且在从不同线程调用函数GetRecordsByDate
时,可能会从类外部调用函数。
简单地说,你能告诉我这种设计适合多线程windows应用程序吗?如果这不是线程安全的,那么我怎样才能使我的类或其成员线程安全?我应该使用同步对象来锁定整个类还是应该使用 readwritelocker 来锁定我的静态成员?AddEvent
EventManager
s_listEvents