gpt4 book ai didi

c# - Parallel.ForEach 与 ListView

转载 作者:行者123 更新时间:2023-11-30 19:29:46 24 4
gpt4 key购买 nike

我有以下代码:

Parallel.ForEach(this.listView2.CheckedItems,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
(CheckedItem) =>
{
//do something
});

我得到以下编译错误:

The type arguments for method 'System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.OrderablePartitioner, System.Threading.Tasks.ParallelOptions, System.Action)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

我搜索了如何将 ListView 用于任务,但找不到任何内容。

如何将 Parallel.ForEach 与 ListView 一起使用?

最佳答案

ListView.CheckedItems 返回 CheckedItemsListViewCollection它不实现任何泛型集合类型,因为它驻留在泛型尚不可用的 .NET 1.x 区域中。您需要告诉 PLinq 什么类型的项目驻留在集合中。如果您阅读文档,CheckedListViewCollection 包含 ListViewItems .您可以使用 Linq 通过 Cast 扩展方法显式指定类型。

Parallel.ForEach(this.listView2.CheckedItems.Cast<ListViewItem>(),
new ParallelOptions { MaxDegreeOfParallelism = 4 },
(CheckedItem) =>
{
//do something
});

整个讨论可能会过时,因为 ListViews(以及大多数其他 winform 控件)只能从 UI 线程访问。如果您必须并行,您可以在 ListViewItem 中创建数据的副本并对其进行处理。

关于c# - Parallel.ForEach 与 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112053/

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