У меня есть случай есть я хочу, чтобы вызвать один метод ASYN внутри цикла paralle.ForeachПроблемы с вызовом метода асинхронного внутри метода Parallel.ForEach
public void ItemCheck<T>(IList<T> items,int id)
{
Parallel.ForEach(items, (current) =>
{
PostData(current,id);
});
Console.log("ItemCheck executed")
}
public async void PostData<T>(T obj, int id)
{
Console.lgo("PosstData executed")
}
Выход:
ItemCheck executed
PosstData executed
Почему это происходит, как это ?? Перед завершением выполнения PostData метода, следующая строка executed.How я могу решить эту issue.Anyone помощь по этому
Я подозреваю, что это не ваш * фактический * код. Пожалуйста, опубликуйте [mcve]. Но принципиально, ваш метод асинхронный недействителен, что затрудняет ожидание завершения всех задач перед продолжением. Кроме того, использование 'Parallel.ForEach' кажется бессмысленным, когда вы используете методы async - просто вызовите все методы async, а затем дождитесь завершения всех задач (когда вы изменили метод async для возврата' Task') –
@ Jon Skeet .. Внутри метода PostData я вызываю другой метод, который предназначен для создания restcalls. – vmb
Вы не дожидаетесь своего вызова PostData, поэтому ваш parallel.foreach будет немедленно завершен. Он не будет ждать завершения PostData. – Evk