Вы должны использовать async/await
там, где можете, но вы можете попробовать что-то вроде этого:
// you should share this for connection pooling
public static HttpClient = new HttpClient();
public static void Main(string[] args)
{
// build a list of tasks to wait on, then wait
var tasks = ss.Select(x => metadataApi(url, conn, name, alias)).ToArray();
Task.WaitAll(tasks);
}
public static async Task metadataApi(string _url, string _connstring, string _spname, string _alias)
{
string url = _url;
var response = await httpClient.GetAsync(url);
Console.WriteLine("CHECKING");
if (response.IsSuccessStatusCode)
{
Console.WriteLine("IS OK");
string json = await content.ReadAsStringAsync();
//Doing some stuff not relevant
}
}
Стоит отметить, что это попытается запустить несколько параллельно. Если вам нужно запустить их все один за другим, возможно, вы захотите создать еще одну async
функцию, которая ожидает каждого результата по отдельности, и вызовите ее из Main
. .Result
немного антипаттерн (с современным синтаксисом c # вы можете использовать async
в главной функции), но для вашего скрипта это должно быть "хорошо", но я бы минимизировал его использование (поэтому я бы не стал не используйте .Result
внутри цикла.