今天写了一个小程序, 使用了Backgroundworker
在bgworker的RunWorkerCompleted里面写了一个函数,其中有一段
foreach(DataRow dr in datUser.Rows)
{
dr["col1"] = "123";
...
}
结果程序运行时总是提示invalidoperation的异常
我还以为是datUser在循环里面被修改了,check一下发现没有, 不过安全起见,还是在foreach之前加了
DataTable dtTemp = datUser.Copy();
结果发现问题仍然存在
于是想到代码重入的问题。果然发现程序里有多个地方在做bgworker.RunWorkerAsync()
于是在循环前面加了lock
问题解决。