У меня огромный цикл Parallel.For
. Проблема в том, что операции записи DataRow не являются многопоточными, поэтому мне нужно заблокировать присваивающие утверждения. Это не проблема для меня, за исключением того, что она выглядит уродливой, когда мне приходится блокировать все операции присваивания. Это выглядит так:Назначение блокировки DataRow
Parallel.For(0, ds.Tables["MyTable"].Rows.Count, i =>
lock (s_lockObject)
{
ds.Tables["MyTable"].Rows[i]["myValue1"] = myValue1;
}
//some operations
lock (s_lockObject)
{
ds.Tables["MyTable"].Rows[i]["myValue2"] = myValue2;
}
//some operations
lock (s_lockObject)
{
ds.Tables["MyTable"].Rows[i]["myValue3"] = myValue3;
}
});
Возможно, есть способ заблокировать назначение по умолчанию, например, написать некоторое расширение.