我想在我的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
爲什麼你需要創建自己的事件系統? –