我有一个由 BackgroundWorker ProgressChanged 更新的 UI。它有一个进度条和一个列表视图,显示后台工作人员正在处理的每个项目的文件名。
如果它是一个新文件,我只想将一个项目添加到列表视图中,所以我尝试使用列表视图中的最后一个项目和当前文件名之间的比较。
但是,这会引发 TargetInvocation 错误。
void m_oWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
var r = Enumerable.Empty<ListViewItem>();
if (this.listView1.Items.Count > 0)
r = this.listView1.Items.OfType<ListViewItem>();
var last = r.LastOrDefault();
if (last.Text != CurrentTrack.Name)
{
ListViewItem LVI = new ListViewItem(currentTrack.Name);
LVI.SubItems.Add(keywords);
LVI.SubItems.Add("Updated");
listView1.Items.Add(LVI);
listView1.TopItem = LVI;
listView1.EnsureVisible(listView1.Items.Count - 1);
}
progressBar1.Value = e.ProgressPercentage;
lblStatus.Text = "Processing......" + progressBar1.Value.ToString() + "%";
}
有可能实现这一目标吗?