我写了一个程序,主线程负责hash表里面写东西,付线程负责定时将hash表里面的东西读出和获取的对比,如果重复就抛弃,如果不重复就保留,出现在如下错误:
在:DictionaryEntry dt in HasTabOut抛出:
System.InvalidOperationException:修改集合;枚举操作可能无法执行。的异常。
代码如下:
public bool CheckOut(string data)
{
bool Ret = false;//判断数据是否重复默认为否
DateTime Dtime = DateTime.Now;
string Gdata = data;
int Sct = 0;
if (HasTabOut != null)
{
foreach (DictionaryEntry dt in HasTabOut) ///抛出异常的地方!!
{
Sct = Dtime.Subtract(DateTime.Parse(dt.Key.ToString())).Seconds;
if (Sct > 5)
{
//如果数据存在时间大于五秒,则删除数值
HasTabOut.Remove(dt.Key);
}
}
foreach (DictionaryEntry dt in HasTabOut)
{
Sct = Dtime.Subtract(DateTime.Parse(dt.Key.ToString())).Seconds;
//如果时间小于等于五秒,且有值返回
if (Gdata == dt.Value.ToString() && Sct <= 5)
{
Ret = true;
break;
}