Мне нужно скачать файл из источника Https.Я сделаю эту асинхронность следующим образом (пока работает):
void doChecksbeforDownload(){
//Do some Checks
DownloadFileAsync();
}
void DownloadFileAsync(){
...
...
this.client.UploadStringCompleted += new UploadStringCompletedEventHandler(client_UploadStringCompleted);
this.client.Headers["Content-Type"] = "application/x-www-form-urlencoded";
this.client.UploadStringAsync(new Uri(url), "POST", PostParameter);
...
...
}
и вызову метод client_UploadStringCompleted (), когда закончим:
void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
//Do Check here
}
Пока все хорошо.Теперь я помещаю все это в класс «Функции» и вызываю метод следующим образом:
Functions f = new Functions();
f.doChecksbeforeDownload();
Я хочу, чтобы doChecksbeforeDownload () ожидал, пока clientUloadStringCompleted будет завершен.
Как мне сказать doChecksbeforeDownload ждать, пока вызов Async в DownloadFilesAsync не будет завершен и готов.
- Вызов doChecksbeforeDownload ()
- ChecksbeforeDownload () -> DownloadFileAsync ()
- ChecksbeforeDownload () -> Ожидания .......
- DownloadFileAsync () -> Complete & Ready
- ChecksbeforeDownload () -> возвращает FOOв основной класс
Есть ли лучшие практики / примеры для достижения этой цели?Я застрял в этой точке.
Заранее спасибо
Ханнес