我如何使用Parallel.ForEach for Excel?

我正在尝试使用Parallel.ForEach for Excel,但我得到错误。 代码是

using System.Threading.Tasks; using Excel = Microsoft.Office.Interop.Excel; public void function(Excel.Range range) { Parallel.ForEach(range, item=> { //do stuff }); } 

错误是错误7:方法'System.Threading.Tasks.Parallel.ForEach(System.Collections.Generic.IEnumerable,System.Action)'的types参数不能从用法推断。 尝试明确指定types参数。

如果您有任何想法,我将非常感激。

您看到的错误是因为Parallel.ForEach在非generics集合上不受支持。

从.NET博客中的并行编程 :

.NET 2.0引入了generics以增强代码的可重用性和types安全性。 从那时起,generics集合(IEnumerable,List,Dictionary等)已经成为标准,并推荐在它们的非generics对象(IEnumerable,ArrayList,HashTable等)上。 因此,Parallel.ForEach仅支持generics集合 ,因此下面的代码将无法编译。

有一个解决方法,使用IEnumerable.Cast他们在博客中提到:

 Parallel.ForEach(r.Cast<object>(), _ => { // Do stuff }); 

虽然这会编译 ,但它不会Excel.Range 工作 ,因为它具有线程关联性,并且只能通过STA线程工作,因为它正在执行COM互操作。