[C#] Альтернатива DataTable.Select при иcпользовании Parallel.For

batyrLAN

Писатель
Регистрация
29 Июл 2012
Сообщения
4
Реакции
0
Здравствуйте.
У меня такая проблема: есть 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. Какую можно найти альтернативу?
 
бред написан, прочитайте что такое Parallel.For (а также что такое поток) ... кстати, использование Parallel.For далеко не всегда работает быстрее чем просто for в 1 потоке, со всеми вашими выборками
 
Назад
Сверху