我想對DataTable/DataSet進行線程安全更新操作。有大約20個線程使用DataTable的Rows.Find(pk)
方法更新〜40行全局DataTable。每個線程將更新不同的DataTable行。線程安全的數據集
我爲DataSet使用以下包裝類。這種方法是線程安全的嗎?
public sealed class MyDataSet{
public static DataSet ds = new DataSet();
public static UpdateRow(key,data)
{
object _lock = new object();
DataRow dr = ds.Tables[0].Rows.Find(key);
lock(_lock){
dr.AcceptChanges();
dr.BeginEdit();
dr["col"] = data;
dr.EndEdit();
}
}
}
該方法從for
循環中調用。
for(int x=0; x<40; x++;){
if(someCondition)
.
.
.
MyDataSet.UpdateRow(key,data);
.
.
.
}
一切都在多線程環境中完成。 UpdateRow方法是否線程安全?