Нужно прочитать построчно текст из файла и передать в функцию которая выполняется в другом потоке

В этом примере при каждом проходе создаётся новый набор потоков, все они запускаются и работают действительно параллельно. Затем все потоки синхронизируются и начинается следующая итерация считывания.

code: #csharp
  1. public void Read()
  2.     {
  3.         using (StreamReader reader = new StreamReader("SomeFile.txt"))
  4.         {
  5.             // Количество строк, которые необходимо считать из файла за один проход.
  6.             int domainCount = 5;
  7.  
  8.             while (reader.Peek() >= 0)
  9.             {
  10.                 // Массив строк, которые будут считаны за один проход.
  11.                 string[] domains = new string[domainCount];
  12.  
  13.                 // Считать domainCount строк из файла.
  14.                 for (int i = 0; i < domainCount; i++)
  15.                     domains[i] = reader.ReadLine().Trim();
  16.  
  17.                 // Массив потоков, которые будем запускать при каждом проходе.
  18.                 Thread[] threads = new Thread[domainCount];
  19.  
  20.                 // Инициализировать массив потоков и одновременно запускать потоки.
  21.                 for (int i = 0; i < threads.Length; i++)
  22.                 {
  23.                     threads[i] = new Thread(new ParameterizedThreadStart(SomeMethod));
  24.                     threads[i].Start(domains[i]);
  25.                 }
  26.  
  27.                 // Синхронизируем запущенные потоки.
  28.                 foreach (Thread thread in threads)
  29.                     thread.Join();
  30.             }
  31.         }
  32.     }
Поделиться:

Похожие статьи: