c# 多线程访问 Dictionary解决办法
c# 多线程访问 Dictionary
public static Dictionary<string, DateTime> dictionary = new Dictionary<string, DateTime>();
public static object locker = new object();//添加一个对象作为锁
public static void AddRecord()//线程1循环调用此函数
{
lock (locker)//锁
{
/*添加过程*/
dictionary.Add("....", DateTime.Now);
}
}
public static void DeleteRecord()//线程2循环调用此函数
{
lock (locker)//锁
{
/*删除过程*/
dictionary.Remove("....");
}
}
多线程访问 Dictionary是不是一定要这样写,例如我直接写成:
lock( dictionary)
{
线程一代码添加 dictionary内容
}
lock( dictionary)
{
线程2代码删除 dictionary内容
}
这样是不是没有用的?
------解决思路----------------------
还有,如果你直接lock(字典)
那么这个字典对象你就不要随便重新new了
public static Dictionary<string, DateTime> dictionary = new Dictionary<string, DateTime>();
public static object locker = new object();//添加一个对象作为锁
public static void AddRecord()//线程1循环调用此函数
{
lock (locker)//锁
{
/*添加过程*/
dictionary.Add("....", DateTime.Now);
}
}
public static void DeleteRecord()//线程2循环调用此函数
{
lock (locker)//锁
{
/*删除过程*/
dictionary.Remove("....");
}
}
多线程访问 Dictionary是不是一定要这样写,例如我直接写成:
lock( dictionary)
{
线程一代码添加 dictionary内容
}
lock( dictionary)
{
线程2代码删除 dictionary内容
}
这样是不是没有用的?
------解决思路----------------------
还有,如果你直接lock(字典)
那么这个字典对象你就不要随便重新new了