Это моя первая попытка получить код для запуска asyn c, и я не могу сказать, так ли это на самом деле. В отчете о загрузке функции нет «ожидания», и есть предупреждение о том, что он будет работать синхронно.
Я пытаюсь загрузить несколько отчетов одновременно, а затем заархивировать их все в один файл.
Результат такой, как ожидалось, но я хотел бы быть уверен, что код действительно работает в asyn c.
static async Task Main(string[] args)
{
string folderName = "Batch123";
string fullDir = Path.Combine(ConfigurationManager.AppSettings["path"], folderName);
Directory.CreateDirectory(fullDir);
await RunReports(folderName);
string zipPath = Path.Combine(ConfigurationManager.AppSettings["path"], "Zip", folderName);
Directory.CreateDirectory(zipPath);
ZipFile.CreateFromDirectory(fullDir, Path.Combine(fullDir, zipPath, "CRAs.zip"));
}
private static async Task RunReports(string folderName)
{
string[] dunsToProcess = new string[] {"d1"
,"d2"
,"d3"
};
await Task.WhenAll(dunsToProcess.Select(i => DownloadReport(i, folderName)));
}
private static async Task DownloadReroport(string DUNS, string folderName)
{
NetworkCredential cred = new NetworkCredential(ConfigurationManager.AppSettings["networkUser"]
, ConfigurationManager.AppSettings["networkPassword"]);
string fullPath = Path.Combine(ConfigurationManager.AppSettings["path"], folderName, string.Format("CRA for DUNS {0}.pdf", DUNS));
WebClient wc = new WebClient();
wc.Credentials = cred;
wc.DownloadFile(@"http://xxxxxxx&pcDUNS=" + DUNS
, fullPath);
}
Я надеюсь, что это правильно, так как он будет основой много других изменений. Если нет, то можете ли вы указать, что я делаю не так?
Смело высмеивайте мой код над чем угодно !!! У меня вообще не было обучения c#.
Спасибо.