小编tec*_*eak的帖子

线程安全的数据集

我想对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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

for循环调用此方法.

for(int x=0; x<40; x++;){
    if(someCondition)
    .
    .
    .
    MyDataSet.UpdateRow(key,data);
    .
    .
    .
    }
Run Code Online (Sandbox Code Playgroud)

一切都在多线程环境中完成.UpdateRow方法线程安全吗?

c# dataset thread-safety

1
推荐指数
1
解决办法
4737
查看次数

标签 统计

c# ×1

dataset ×1

thread-safety ×1