【问题标题】:Parallel.ForEach gives errorParallel.ForEach 给出错误
【发布时间】:2013-10-04 02:12:32
【问题描述】:

我一直在尝试搜索我可以为我的 Parallel.ForEach 循环做什么:

        selection.Words is Microsoft.Office.Interop.Word.Selection;
        //range is supposed to be a word.Range
        Parallel.ForEach(selection.Words, range =>
        {

        });

这是我收到的错误,无法从用法中推断方法“System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.OrderablePartitioner, System.Action)' 的类型参数。尝试明确指定类型参数。"

我现在一直在寻找一个好时机,但他们都只是显示 object.AsEnumerable() 作为答案。 selection.Words 不能变成可数,但是。

【问题讨论】:

    标签: c# parallel.foreach


    【解决方案1】:

    您可以看到Words 类型是非泛型可枚举——因此编译器无法推断ForEach<TSource> 的泛型类型参数。您可以使用OfType<Range> 将集合变成类型化的通用集合:

    Parallel.ForEach(selection.Words.OfType<Microsoft.Office.Interop.Word.Range>(), range =>
        {
    
        });
    

    【讨论】:

    • selection.Words 没有 .OfType 扩展名,很遗憾。
    • OfTypeIEnumerable 的扩展,因此Words 不是IEnumerable,或者您没有在顶部的using 语句中包含System.Linq
    【解决方案2】:

    您是否尝试过像这样明确指定类型。

    var list = new List<string>();
    Parallel.ForEach<string>(list, (s) => s.Trim());
    

    【讨论】:

    • 这只是给了我一个不同的错误:“无法从 'Microsoft.Office.Interop.Word.Words' 转换为 'System.Collections.Concurrent.OrderablePartitioner
    猜你喜欢
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多