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?
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.]
Tags und Links .net c# timeout concurrency collections