BlockingCollection<T>.GetConsumingEnumerable Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Koleksiyondaki öğeler için bir tüketim IEnumerable<T> sağlar.
Aşırı Yüklemeler
GetConsumingEnumerable(CancellationToken) |
Koleksiyondaki öğeler için bir tüketim IEnumerable<T> sağlar. |
GetConsumingEnumerable() |
Koleksiyondaki öğeler için bir tüketim IEnumerable<T> sağlar. |
GetConsumingEnumerable(CancellationToken)
- Kaynak:
- BlockingCollection.cs
- Kaynak:
- BlockingCollection.cs
- Kaynak:
- BlockingCollection.cs
Koleksiyondaki öğeler için bir tüketim IEnumerable<T> sağlar.
public:
System::Collections::Generic::IEnumerable<T> ^ GetConsumingEnumerable(System::Threading::CancellationToken cancellationToken);
public System.Collections.Generic.IEnumerable<T> GetConsumingEnumerable (System.Threading.CancellationToken cancellationToken);
member this.GetConsumingEnumerable : System.Threading.CancellationToken -> seq<'T>
Public Function GetConsumingEnumerable (cancellationToken As CancellationToken) As IEnumerable(Of T)
Public Iterator Function GetConsumingEnumerable (cancellationToken As CancellationToken) As IEnumerable(Of T)
Parametreler
- cancellationToken
- CancellationToken
Gözlemlemek için bir iptal belirteci.
Döndürülenler
IEnumerable<T> Koleksiyondaki öğeleri kaldıran ve döndüren.
Özel durumlar
CancellationToken iptal edildi.
BlockingCollection<T> atılmış veya CancellationTokenSource oluşturulan cancellationToken
atılmış
Açıklamalar
Bu yöntem, istemci kodunun bir foreach döngüsü (Visual Basic'te Her biri için) veya Parallel.ForEach bir PLINQ sorgusu kullanarak koleksiyondan öğeleri kaldırmasını sağlar. Numaralandırıcı true döndürene kadar IsCompleted öğeleri sağlamaya devam eder (varsa) ve false ise IsCompleted , bir öğe kullanılabilir duruma gelene veya iptal edilene kadar döngü blokları CancellationToken .
Ayrıca bkz.
Şunlara uygulanır
GetConsumingEnumerable()
- Kaynak:
- BlockingCollection.cs
- Kaynak:
- BlockingCollection.cs
- Kaynak:
- BlockingCollection.cs
Koleksiyondaki öğeler için bir tüketim IEnumerable<T> sağlar.
public:
System::Collections::Generic::IEnumerable<T> ^ GetConsumingEnumerable();
public System.Collections.Generic.IEnumerable<T> GetConsumingEnumerable ();
member this.GetConsumingEnumerable : unit -> seq<'T>
Public Function GetConsumingEnumerable () As IEnumerable(Of T)
Döndürülenler
IEnumerable<T> Koleksiyondaki öğeleri kaldıran ve döndüren.
Özel durumlar
BlockingCollection<T> yok edildi.
Örnekler
Aşağıdaki örnekte yönteminin nasıl kullanılacağı gösterilmektedir GetConsumingEnumerable :
class ConsumingEnumerableDemo
{
// Demonstrates:
// BlockingCollection<T>.Add()
// BlockingCollection<T>.CompleteAdding()
// BlockingCollection<T>.GetConsumingEnumerable()
public static async Task BC_GetConsumingEnumerable()
{
using (BlockingCollection<int> bc = new BlockingCollection<int>())
{
// Kick off a producer task
var producerTask = Task.Run(async () =>
{
for (int i = 0; i < 10; i++)
{
bc.Add(i);
Console.WriteLine($"Producing: {i}");
await Task.Delay(100); // sleep 100 ms between adds
}
// Need to do this to keep foreach below from hanging
bc.CompleteAdding();
});
// Now consume the blocking collection with foreach.
// Use bc.GetConsumingEnumerable() instead of just bc because the
// former will block waiting for completion and the latter will
// simply take a snapshot of the current state of the underlying collection.
foreach (var item in bc.GetConsumingEnumerable())
{
Console.WriteLine($"Consuming: {item}");
}
await producerTask; // Allow task to complete cleanup
}
}
}
module ConsumingEnumerableDemo =
// Demonstrates:
// BlockingCollection<T>.Add()
// BlockingCollection<T>.CompleteAdding()
// BlockingCollection<T>.GetConsumingEnumerable()
let blockingCollectionGetConsumingEnumerable () =
task {
use bc = new BlockingCollection<int>()
// Kick off a producer task
let producerTask =
task {
for i = 0 to 9 do
bc.Add i
printfn $"Producing: {i}"
do! Task.Delay 100 // sleep 100 ms between adds
// Need to do this to keep foreach below from hanging
bc.CompleteAdding()
}
// Now consume the blocking collection with foreach.
// Use bc.GetConsumingEnumerable() instead of just bc because the
// former will block waiting for completion and the latter will
// simply take a snapshot of the current state of the underlying collection.
for item in bc.GetConsumingEnumerable() do
printfn $"Consuming: {item}"
do! producerTask // Allow task to complete cleanup
}
'Imports System.Threading.Tasks
'Imports System.Collections.Concurrent
' Demonstrates:
' BlockingCollection<T>.Add()
' BlockingCollection<T>.CompleteAdding()
' BlockingCollection<T>.GetConsumingEnumerable()
Class ConsumingEnumerableDemo
Shared Sub BC_GetConsumingEnumerable()
Using bc As New BlockingCollection(Of Integer)()
' Kick off a producer task
Task.Factory.StartNew(
Sub()
For i As Integer = 0 To 9
bc.Add(i)
' sleep 100 ms between adds
Thread.Sleep(100)
Next
' Need to do this to keep foreach below from not responding.
bc.CompleteAdding()
End Sub)
' Now consume the blocking collection with foreach.
' Use bc.GetConsumingEnumerable() instead of just bc because the
' former will block waiting for completion and the latter will
' simply take a snapshot of the current state of the underlying collection.
For Each item In bc.GetConsumingEnumerable()
Console.WriteLine(item)
Next
End Using
End Sub
End Class