Скачиваю файл из интернета и мне нужно отображать при этом прогресс скачивания на форме. После скачивания прогрессбар должен быть спрятан. Проблема в том, что никак не могу добиться того, чтобы после завершения таска компонент с прогрессбаром прятался.
private void fPreTrain_Load(object sender, EventArgs e)
{
this.TopMost = true;
Application.DoEvents();
string path = Application.StartupPath + @"\vids\warmup.mp4";
axWindowsMediaPlayer1.URL = path;
if (!File.Exists(path))
{// Файла нет, качаем
layoutControlItem2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
string clean_path = Path.GetDirectoryName(path);
if (!Directory.Exists(clean_path))
Directory.CreateDirectory(clean_path);
try
{
Task.Run(() => Classes.HttpManager.DownloadFile(
"https://hardworkandsweat.com//content/videos/warmup.mp4", path, progressDownload));
}
catch
{
layoutControlItem2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
if (Classes.MyForm.Show("Ошибка","Не получилось скачать файл разминки. Открыть видео в браузере?", Classes.MyForm.ftypes.Warning) == DialogResult.Yes);
System.Diagnostics.Process.Start("https://hardworkandsweat.com//content/videos/warmup.mp4");
return;
}
layoutControlItem2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
axWindowsMediaPlayer1.Ctlcontrols.play();
}
else
axWindowsMediaPlayer1.Ctlcontrols.play();
}
Если использовать task.wait , то скачивание идёт в фоне, форма не отображается. Если использовать цикл, в котором проверять статус выполнения таска - та же проблема. Нужно и качать и отображать
Task.Wait()&Task.Resultи иже с ними вешают UI их нельзя использовать в общем потоке с граф.интерфейсом. Используйтеasync/await– Bulson Dec 12 '17 at 11:40