2011-09-12 15 views
1

Parallel.ForEachを使用しようとしたときに初めて "where T:"構造を試しています。Parallel.ForEachを使用してメソッド 'x'の型引数を推論することはできません

"メソッド 'System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.OrderablePartitioner、System.Action)'の型引数は、使用法から推論できません。"

私はエラーが発生している理由を理解していますが、それを修正する方法は理解していません。データは2つのプロパティしか持たない単純なクラスです。

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 
      }); 
    } 

    } 
} 

答えて

4

Parallel.ForEachの最初の引数はIEnumerable<T>Partitioner<T>または類似したものでなければなりません。 UnOrderedBufferクラスは、関連するパラメータタイプに変換できません。 IEnumerable<T>などを実装すると、うまくいきます。

これは型引数やジェネリック制約に関するものではなく、正しいインタフェースを実装していないか、適切なクラスを拡張していないクラスに関するものです。

関連する問題