我正在为桌面制作youtube mp3下载器,我想使用以下代码制作progressbarr:
var progress = new Progress<double>(p => progressBar.Value = Convert.ToInt32(p * 100));
progress_label.Text = Convert.ToString(progressBar.Value) + "%";
await client.DownloadMediaStreamAsync(streamInfo, browse_txtbox.Text + title + ".mp3", progress);
我正在使用youtubeexplode库。 如何使标签刷新以及进度条,因为进度条工作正常但我想在progress_label中显示进度的百分比。
答案 0 :(得分:1)
Progress
基本上是Action
委托,DownloadMediaStreamAsync
会定期调用以更新进度。为了做更多比你正在做的事情,你需要修改它,以便你进行代码块而不是一次调用:
var progress = new Progress<double>(p =>
{
progressBar.Value = Convert.ToInt32(p * 100);
progress_label.Text = Convert.ToString(p * 100) + "%";
});
await client.DownloadMediaStreamAsync(streamInfo, browse_txtbox.Text + title + ".mp3", progress);
现在标签也应该使用进度条进行更新。您还应检查是否需要在UI线程上Invoke
,我不确定将在Progress
的UI线程上调用DownloadMediaStreamAsync
。我无法告诉你如何做到这一点,因为我不确定你使用的是什么UI框架。请注意可能存在的跨线程问题。