- Автор темы
- #1
Здравствуйте.
У меня такая проблема: есть Datatable с двумя столбцами "id' и "col1". Мне необходимо делать выборку значения в столбце "col1" по заданному "id". При обычном переборе цикла for всё работает нормально.
Но стоит мне использовать Parallel.For, как отладчик на строке f1 = Convert.ToSingle(dr1[0]["col1"]; дает ошибку IndexOutOfRangeException
Как я понимаю, в TPL не рекомендуется работать с Datatable и Datarow. Какую можно найти альтернативу?
У меня такая проблема: есть Datatable с двумя столбцами "id' и "col1". Мне необходимо делать выборку значения в столбце "col1" по заданному "id". При обычном переборе цикла for всё работает нормально.
Код:
private void testFunction (Datatable dTable1)
{
float f1;
float f2;
Datarow [] dr1;
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 1000; j++)
{
.........................
dr1 = dTable1.Select(expression);
f1 = Convert.ToSingle(dr1[0]["col1"];
f2 = f1 + ...........;
.........................
}
}
}
Но стоит мне использовать Parallel.For, как отладчик на строке f1 = Convert.ToSingle(dr1[0]["col1"]; дает ошибку IndexOutOfRangeException
Код:
private void testFunction (Datatable dTable1)
{
float f1;
float f2;
Datarow [] dr1;
Parallel.For(0, 660, i =>
{
for (int j = 0; j < 1000; j++)
{
.........................
dr1 = dTable1.Select(expression);
f1 = Convert.ToSingle(dr1[0]["col1"]; //тут дает ошибку IndexOutOfRangeException
f2 = f1 + ...........;
.........................
}
});
}
Как я понимаю, в TPL не рекомендуется работать с Datatable и Datarow. Какую можно найти альтернативу?