Conjunto de datos seguro para subprocesos

Quiero realizar operaciones de actualización en el subproceso DataTable / DataSet. Hay ~ 20 hilos en cada actualización ~ 40 filas de DataTable global usandoRows.Find(pk) Método de DataTable. Cada hilo se actualizará filas distintas de DataTable.

Estoy usando la siguiente clase contenedora para DataSet. ¿Es este enfoque seguro para los hilos?

<code>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();
        }
    }
}
</code>

Este método se llama desde unfor lazo.

<code>for(int x=0; x<40; x++;){
    if(someCondition)
    .
    .
    .
    MyDataSet.UpdateRow(key,data);
    .
    .
    .
    }
</code>

Todo se hace en un entorno multihilo. ¿Es seguro el hilo del método UpdateRow?

Respuestas a la pregunta(2)

Su respuesta a la pregunta