Thread-sicherer Datensatz
Ich möchte Aktualisierungsvorgänge für DataTable / DataSet threadsicher machen. Es gibt ~ 20 Threads, die jeweils ~ 40 Zeilen der globalen DataTable mit aktualisierenRows.Find(pk)
Methode von DataTable. Jeder Thread aktualisiert verschiedene Zeilen von DataTable.
Ich verwende die folgende Wrapper-Klasse für DataSet. Ist dieser Ansatz threadsicher?
<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>
Diese Methode wird von a aufgerufenfor
Schleife.
<code>for(int x=0; x<40; x++;){ if(someCondition) . . . MyDataSet.UpdateRow(key,data); . . . } </code>
Alles wird in einer Multithread-Umgebung durchgeführt. Ist der UpdateRow-Methodenthread sicher?