Изменить данные в возрастающем виде данных с помощью Adapter.Fill () - PullRequest
0 голосов
/ 30 октября 2018

У меня два потока, один использует SqlDataAdapter для извлечения набора результатов из запросов к серверу SQL, другой обрабатывает данные, которые не нужно удалять, одновременно с набором данных.

Код:

//Thread 1
DataSet ds = new DataSet();
using (SqlDataAdapter sd = new SqlDataAdapter(cmd, sourceConn))
{
    sd.Fill(ds);
}

//Thread 2 -- Execute after Fill() starts
//I might be deleting or modifying  some rows(use Delete() not RemoveAt()), but also might be just reading ds
ds.Tables[0].AcceptChanges(); 

Результат выполнения иногда показывает ArgumentException, говорящий, что индекс был вне диапазона при выполнении AcceptChanges(), или IndexOutOfRangeException При выполнении на ds.Tables[0].Rows[i].Delete() или просто прочитал некоторую строку ith (конечно, я ограничил i<= ds.Tables[0].Rows.Count - 1 ). число строк исключений встречается при некотором случайном числе, но, вероятно, близко к более чем 80% от общего числа строк (например, всего 150 тыс., при 132 тыс.). Так в чем же дело, если я не выполняю процесс удаления?

...