Каков был бы он правильный способ запустить список задач параллельно в режиме огня и забыть.Как запустить список задач параллельно C#
То, что у меня есть, заставляет меня поверить в это. Когда Все блокируется, пока все не будет сделано.
У меня есть некоторые, подобные этим, мне нужно научиться цитировать и хранить все вызываемые функции, а затем увольнять их, когда все они запускаются одновременно, неважно, какая функция сначала вызвана или последний.
Каков правильный подход для этого?
Желаю, чтобы MS поместила в их intellisense немного больше информации, чтобы помочь нам, потому что у меня есть больше потребностей в асинхронных вызовах, особенно много рабочих вызовов за один раз, и они все стреляют и забывают.
Вот что у меня есть.
public async static Task UpdateBayPositionAsync(string cadCNN, string bayPositions)
{
List<Task> myTask = new List<Task>();
string[] bps = bayPositions.Split(',');
int bID; byte pos;
for (int i = 0; i < bps.Length; i++)
{
bID = int.Parse(bps[i].Split(':')[0].ToString());
pos = byte.Parse(bps[i].Split(':')[1].ToString());
myTask.Add(Task.Run(() => { ElevationManagerDL.UpdateBayPosition(cadCNN, bID, pos); }));
};
await Task.WhenAll(myTask.ToList());
}
Возможный дубликат [Запуск двух задач асинхронными параллельно и собирать результаты в .NET 4.5] (http://stackoverflow.com/questions/12343081/run-two-async-tasks-in-parallel-and-collect-results-in-net-4-5) –
Если вы хотите пожара и забыть, почему вы ждете задач? Изменить: зачем беспокоиться о async? Просто встряхните их все в поток. – leppie
Вы захватываете bID и pos из-за пределов цикла, а затем используете их асинхронно. Существует реальная вероятность того, что вы не отправляете параметры, которые вы ожидаете. Объявите их внутри цикла. – spender