Gleichzeitige Sammlung für .NET mit Timeouts?

8

Ich habe eine gleichzeitige Sammlung.

%Vor%

Ich kann einen Gegenstand wie diesen bekommen.

%Vor%

Aber ich brauche es wie: "Warte 10 Sekunden, bevor du falsch zurückkommst, falls jemand einen neuen Gegenstand hinzufügt":

%Vor%

Ich könnte eine Erweiterungsmethode wie folgt schreiben:

%Vor%

Aber wenn jemand in 5 Sekunden ein Element zur Warteschlange hinzufügt, möchte ich nicht noch 5 weitere warten.

Gibt es eine Thread-sichere Auflistung, die diese Funktion in .NET unterstützt?

    
Şafak Gür 10.04.2013, 14:49
quelle

1 Antwort

12

Anstatt ConcurrentQueue direkt zu verwenden, sollten Sie es in BlockingCollection einfügen . Sie können dann TryTake(out T, TimeSpan) verwenden.

BlockingCollection wurde speziell für Producer / Consumer-Szenarien entwickelt. (Sie sollten sich TPL Dataflow gleichzeitig ansehen.]

    
Jon Skeet 10.04.2013, 14:51
quelle