在* Changing * ListView中浏览每个选定的项目

时间:2011-01-24 16:16:39

标签: c# listview selecteditem

这是我用来遍历listView中每个项目的代码:

for (int i = 0; i < listView.SelectedItems.Count; i++) {
    MessageBox.Show(listView.SelectedItems[i].SubItems[0].Text);
}

我的问题是,如果listView中的项目发生更改,这是否仍然有用。例如,假设我已经选择了listView中的所有项目,并按下运行上述代码的按钮。代码运行时,让我们说listView更新,其中一个项目被删除。代码是否仍能成功运行?

2 个答案:

答案 0 :(得分:3)

在允许进行另一次迭代的循环条件之后 之前 之前 之后 p>

鉴于此,这不是我所谓的可靠代码。您应确保线程不会同时尝试访问同一资源,我建议使用互斥锁或使用关键部分。

答案 1 :(得分:0)

首先,你应该使用foreach。但是,“成功”迭代取决于您的定义。如果在foreach迭代的中间,列表被更改,它将抛出异常。如果您使用的是基本整数索引,则不会抛出任何异常,但行为可能无法预测。我会使用某种线程同步(如互斥锁)来确保您可以使用foreach成功迭代而不必担心列表更改。