我想在我的Windows应用程序在c#中创建我自己的事件系统。要做到这一点,我写了下面的类:
静态类的线程安全
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
函数时,函数可以从类外调用。
简单地说,你能告诉我这个设计适用于多线程的Windows应用吗?如果这不是线程安全的,那我该如何让我的类或其成员线程安全?我应该使用同步对象来锁定整个EventManager
类,还是应该使用readwritelocker锁定我的s_listEvents
静态成员?
数百个线程并不理想。即使阻塞,线程也相对昂贵。 –
我的应用程序必须通过tcp从远程计算机收集数据。这个收集操作必须在给定的时间内完成。所以我必须创建许多线程。我可以通过硬件负载平衡来减少线程数量(就像使用多个服务器一样),但在任何情况下,我的应用程序都是多线程应用程序。 – Fer
为什么你需要创建自己的事件系统? –