Это предупреждение примерно о том же, о чём рекомендация не использовать async void методы.
Что будет, если эта async лямбда выкинет исключение? Кто его поймает?
Array.ForEach(Ids.ToArray(), async (p) =>
{
var result = await GetDataAsync(p, ct);
});
А в чём вообще смысл этого кода? Array.Foreach под капотом всего лишь вызывает переданный Action в синхронном цикле. Зачем он async? Если цель — для каждого элемента запустить fire-and-forget таску, то её и запускай внутри синхронного Action.
Array.ForEach(Ids.ToArray(), p =>
{
Task.Run(() =>
{
var result = GetDataAsync(p, ct).Result;
});
});