方法'x'不能从Parallel.ForEach的用法中推断出来

本文关键字:用法 推断出 不能 方法 Parallel ForEach | 更新日期: 2023-09-27 18:08:26

我第一次尝试使用"where T:"构造,并且在尝试使用Parallel.ForEach时出现错误。

"方法'System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.) '的类型参数。OrderablePartitioner, System.Action)'不能从用法中推断出来。"

我明白为什么错误发生,但不知道如何修复它。Data是一个简单的类,只有两个属性。

namespace Test
{
  internal class UnOrderedBuffer<T> where T : class
    {
        ConcurrentBag<T> GenericBag = new ConcurrentBag<T>();
    }
}

namespace Test
{
    internal class Tester
    {
     private UnOrderedBuffer<Data> TestBuffer;

     public void Update()
    {
    Parallel.ForEach(TestBuffer, Item =>
            {
                //do stuff
            });
    }
    }
}

方法'x'不能从Parallel.ForEach的用法中推断出来

Parallel.ForEach的第一个参数应该是IEnumerable<T>, Partitioner<T>或类似的东西。您的UnOrderedBuffer类不能转换为所涉及的任何参数类型。如果你让它实现IEnumerable<T>或类似的东西,那么它就会工作。

这不是关于类型参数或泛型约束的问题,而是关于你的类没有实现正确的接口或扩展一个合适的类。