gpt4 book ai didi

C#:foreach 循环中的进度更改事件不知道如何使用进度条显示进度

转载 作者:行者123 更新时间:2023-11-30 23:19:07 25 4
gpt4 key购买 nike

目前我正在用 C# 创建一个视频下载器,因为我允许用户一次选择多个视频进行下载,并且所选视频会转到 ListView 控件。我想显示每次下载的进度。这是我开始下载的代码:

 listView1.Invoke(new MethodInvoker(delegate ()
{
foreach (ListViewItem item in listView1.SelectedItems)
{
try
{
listViewItems = listView1.Items.Count;
string path = Properties.Settings.Default.outputFolder;
IEnumerable<VideoInfo> videos = DownloadUrlResolver.GetDownloadUrls(item.Text);
VideoInfo video = videos.First(p => p.VideoType == VideoType.Mp4);
if (video.RequiresDecryption)
DownloadUrlResolver.DecryptDownloadUrl(video);
title = video.Title;
foreach (char c in invalid)
{
title = title.Replace(c.ToString(), "");
}
VideoDownloader downloader = new VideoDownloader(video, Path.Combine(path + "\\", title + video.VideoExtension));
downloader.DownloadProgressChanged += Downloader_DownloadProgressChanged;
downloader.DownloadFinished += Downloader_DownloadFinished;
Thread thread = new Thread(() =>
{
downloader.Execute();
})
{ IsBackground = true };

thread.Start();
}
catch (Exception web)
{
DialogResult dlg = new DialogResult();
messageBox msb = new messageBox();
msb.labelText = "Video no longer available";
msb.btnText = "Ok";
dlg = msb.ShowDialog();
if(dlg == DialogResult.OK)
{
msb.Close();
}
}
}

这是进度变化事件:

private void Downloader_DownloadProgressChanged(object sender, ProgressEventArgs e)
{
flowLayoutPanel1.Invoke(new MethodInvoker(delegate
{
ProgressBar pb = new ProgressBar();
pb.Value = (int)e.ProgressPercentage;
flowLayoutPanel1.Controls.Add(pb);
}));

}

它不是为每个项目创建进度条,而是创建很多进度条,而这些进度条也没有显示任何进度。

我是 C# 的新手,所以需要这方面的帮助。

最佳答案

如果不亲自实际运行代码,我发现代码有点难以理解,但我建议将您的问题分成两部分。首先,确保 DownloadProgressChanged 事件正常工作,这意味着每次进度更改时都会触发它,并且 e.ProgressPercentage 实际上确实有一个值。并且您不应该在每次 DownloadProgressChanged 触发时都添加新的进度条。其次,获取一些简单的 ProgressBar 代码即可工作,而无需担心整个项目列表甚至下载视频。

将问题分解为可管理的部分,然后在此基础上进行构建。

关于C#:foreach 循环中的进度更改事件不知道如何使用进度条显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40450991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com