Parallel.ForEach中的ListViewItemCollection

时间:2014-04-28 08:25:21

标签: c# listview casting ienumerable parallel.foreach

我想操纵ListView中的所有条目,最好是并行操作。

Parallel.Foreach<ListViewItem>(auftraegeView.Items, line => 
{
    line.Font = new Font(line.Font.FontFamily, someInt);
});

但拒绝工作,因为

  

无法从ListViewItemCollection转换为IEnumerable

ListViewItemCollection不提供ToList()之类的方法 我做了一个笑 - 笑 - 尝试我做了一个演员

(IEnumerable<ListViewItem>)auftraegeView.Items

它没有抛出编译器错误,但在运行时导致了InvalidCasTException。

注意:
尖括号是故意反转的,因此它们不会像HTML那样被吃掉。

问题:
有没有办法将ListView.Items / ListViewItemCollection转换为实现IEnumerable-Interface的东西,因此可以使用Parallel.ForEach

2 个答案:

答案 0 :(得分:1)

试试这个:

Parallel.Foreach(auftraegeView.Items.Cast<ListViewItem>(), line => 
{
    line.Font = new Font(line.Font.FontFamily, someInt);
});

答案 1 :(得分:1)

您的问题可能已得到解答,但也许您应该考虑另一种设置FontFamily线条的方法。它应该是UI的东西。尝试以样式声明它,或者如果你想动态更改字体,请使用某种触发器。