Bezpieczny zestaw danych
Chcę, aby operacje aktualizacji były bezpieczne dla wątków DataTable / DataSet. Istnieje ~ 20 wątków, z których każdy aktualizuje ~ 40 wierszy globalnej tabeli DataTableRows.Find(pk)
metoda DataTable. Każdy wątek będzie aktualizował różne wiersze DataTable.
Używam następującej klasy otoki dla DataSet. Czy to podejście jest bezpieczne dla wątków?
<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>
Ta metoda jest wywoływana z afor
pętla.
<code>for(int x=0; x<40; x++;){ if(someCondition) . . . MyDataSet.UpdateRow(key,data); . . . } </code>
Wszystko odbywa się w środowisku wielowątkowym. Czy wątek metody UpdateRow jest bezpieczny?