进度条和百分比C#

时间:2018-03-29 18:06:56

标签: c# progress-bar

我正在为桌面制作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中显示进度的百分比。

1 个答案:

答案 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框架。请注意可能存在的跨线程问题。