【发布时间】:2012-02-22 10:22:19
【问题描述】:
我有一个单例对象并在其中定义了一个字典。
public class MyClass
{
public static readonly MyClass Instance = new MyClass();
private MyClass
{}
public Dictionary<int, int> MyDictionary = new Dictionary<int, int>();
}
现在,我有两个 System.Timers.Timer 对象正在更新 MyDictionary。
System.Timers.Timer timer1 = new System.Timers.Timer(5);
timer1.AutoReset = false;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(MyTimer1Handler);
timer1.Enabled = true;
timer1.Start();
System.Timers.Timer timer2 = new System.Timers.Timer(5);
timer2.AutoReset = false;
timer2.Elapsed += new System.Timers.ElapsedEventHandler(MyTimer2Handler);
timer2.Enabled = true;
timer2.Start();
private void MyTimer1Handler(object sender, ElapsedEventArgs e)
{
MyClass.Instance.MyDictonary[1] = 100;
}
private void MyTimer1Handler(object sender, ElapsedEventArgs e)
{
MyClass.Instance.MyDictonary[2] = 100;
}
我现在的问题是,考虑到计时器的经过事件处理程序在 MyDictionary 的索引 1 和索引 2 上唯一操作,我需要对 MyDictionary 进行任何锁定吗?
【问题讨论】:
标签: c# multithreading timer