Как выполнить многопоточность с помощью task в C #?

#c# #multithreading

#c# #многопоточность

Вопрос:

У вас есть лучший способ сделать многопоточность?

 GenericLoad newload = new GenericLoad();

Task<IList<List<string>>> task1 = Task<IList<List<string>>>.Factory.StartNew(() => newload.Parse(CSVFile1, ','));
Task<IList<List<string>>> task2 = Task<IList<List<string>>>.Factory.StartNew(() => newload.Parse(CSVFile2, '|'));

task1.wait();
task2.wait();

PrintCSV(task1.Result);
PrintCSV(task2.Result);

task1.Dispose();
task2.Dispose();
  

Комментарии:

1. Не совсем понятно, что вы пытаетесь здесь сделать. Можете ли вы отредактировать свой вопрос, чтобы было ясно, каким вы хотите видеть результат?

Ответ №1:

В этом вопросе много неправильного, настолько много, что было бы невозможно углубиться в каждый аспект. Однако, это, вероятно, больше то, что вы ищете

 public async Task DoSomething()
{
   var newload = new GenericLoad();

   var task1 = Task.Run(() => newload.Parse(CSVFile1, ','));
   var task2 = Task.Run(() => newload.Parse(CSVFile2, '|'));

   await Task.WhenAll(task1, task2);

   PrintCSV(task1.Result);
   PrintCSV(task2.Result);

}
  

Он использует async await , Task.Run , Task.WhenAll . Мой совет — провести некоторое исследование во всех этих