我已经知道要更新控件,我可以使用 Invoke Action
progressBar1.Invoke(new Action(() => { progressBar1.Maximum = 0; }));
但这仅适用于单一数据的控制属性。现在我有一个线程需要更改列表视图项的列表视图集合,清除它然后使用新项目、新文本和图标图像进行更新。它们之间有什么不同,整数或布尔值与列表、数组或整数、布尔值甚至组件、控件的集合相比。我可以简单地添加吗
string[] newItemText = {"item1", "item2", ...};
listView1.Invoke(new Action() => {
i = 0;
foreach(var item in listView1.Items)
{
item.Text = newItemText[i];
i++;
}
}));
我可能需要我的列表视图的解决方案,但如果您有答案,请清楚地解释它为什么以及如何工作,因为我需要彻底了解它。你也可以在尝试这种做法时注意到我的风险。
编辑:问题不在于如何从其他线程更新控制。IT 关于何时以及为什么需要这样做而不是那样做。此外,我需要知道更新单个数据和更新整个数据集合之间的区别。