BlockingCollection<T>.TryTakeFromAny Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí.
Přetížení
TryTakeFromAny(BlockingCollection<T>[], T) |
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí. |
TryTakeFromAny(BlockingCollection<T>[], T, Int32) |
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí. |
TryTakeFromAny(BlockingCollection<T>[], T, Int32, CancellationToken) |
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí. |
TryTakeFromAny(BlockingCollection<T>[], T, TimeSpan) |
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí. |
TryTakeFromAny(BlockingCollection<T>[], T)
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí.
public:
static int TryTakeFromAny(cli::array <System::Collections::Concurrent::BlockingCollection<T> ^> ^ collections, [Runtime::InteropServices::Out] T % item);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T item);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T? item);
static member TryTakeFromAny : System.Collections.Concurrent.BlockingCollection<'T>[] * 'T -> int
Public Shared Function TryTakeFromAny (collections As BlockingCollection(Of T)(), ByRef item As T) As Integer
Parametry
- collections
- BlockingCollection<T>[]
Pole kolekcí.
- item
- T
Položka, která byla odebrána z jedné z kolekcí.
Návraty
Index kolekce v collections
poli, ze kterého byla položka odebrána, nebo -1, pokud položku nelze odebrat.
Výjimky
Nejméně jedna z BlockingCollection<T> instancí byla odstraněna.
Argument collections
má hodnotu null.
Počet hodnot collections
je větší než maximální velikost 62 pro STA a 63 pro MTA.
Argument collections
je matice o délce 0 nebo obsahuje element null.
Nejméně jedna z podkladových kolekcí byla upravena mimo svou BlockingCollection<T> instanci.
Příklady
Následující příklad ukazuje, jak použít metodu BlockingCollection<T>.TryTakeFromAny :
class FromToAnyDemo
{
// Demonstrates:
// Bounded BlockingCollection<T>
// BlockingCollection<T>.TryAddToAny()
// BlockingCollection<T>.TryTakeFromAny()
public static void BC_FromToAny()
{
BlockingCollection<int>[] bcs = new BlockingCollection<int>[2];
bcs[0] = new BlockingCollection<int>(5); // collection bounded to 5 items
bcs[1] = new BlockingCollection<int>(5); // collection bounded to 5 items
// Should be able to add 10 items w/o blocking
int numFailures = 0;
for (int i = 0; i < 10; i++)
{
if (BlockingCollection<int>.TryAddToAny(bcs, i) == -1) numFailures++;
}
Console.WriteLine("TryAddToAny: {0} failures (should be 0)", numFailures);
// Should be able to retrieve 10 items
int numItems = 0;
int item;
while (BlockingCollection<int>.TryTakeFromAny(bcs, out item) != -1) numItems++;
Console.WriteLine("TryTakeFromAny: retrieved {0} items (should be 10)", numItems);
}
}
module FromToAnyDemo =
// Demonstrates:
// Bounded BlockingCollection<T>
// BlockingCollection<T>.TryAddToAny()
// BlockingCollection<T>.TryTakeFromAny()
let blockingCollectionFromToAny () =
let bcs =
[|
new BlockingCollection<int>(5) // collection bounded to 5 items
new BlockingCollection<int>(5) // collection bounded to 5 items
|]
// Should be able to add 10 items w/o blocking
let mutable numFailures = 0;
for i = 0 to 9 do
if BlockingCollection<int>.TryAddToAny(bcs, i) = -1 then
numFailures <- numFailures + 1
printfn $"TryAddToAny: {numFailures} failures (should be 0)"
// Should be able to retrieve 10 items
let mutable numItems = 0
let mutable item = 0
while BlockingCollection<int>.TryTakeFromAny(bcs, &item) <> -1 do
numItems <- numItems + 1
printfn $"TryTakeFromAny: retrieved {numItems} items (should be 10)"
'Imports System.Threading.Tasks
'Imports System.Collections.Concurrent
' Demonstrates:
' Bounded BlockingCollection<T>
' BlockingCollection<T>.TryAddToAny()
' BlockingCollection<T>.TryTakeFromAny()
Class ToAnyDemo
Shared Sub BC_ToAny()
Dim bcs As BlockingCollection(Of Integer)() = New BlockingCollection(Of Integer)(1) {}
bcs(0) = New BlockingCollection(Of Integer)(5)
' collection bounded to 5 items
bcs(1) = New BlockingCollection(Of Integer)(5)
' collection bounded to 5 items
' Should be able to add 10 items w/o blocking
Dim numFailures As Integer = 0
For i As Integer = 0 To 9
If BlockingCollection(Of Integer).TryAddToAny(bcs, i) = -1 Then
numFailures += 1
End If
Next
Console.WriteLine("TryAddToAny: {0} failures (should be 0)", numFailures)
' Should be able to retrieve 10 items
Dim numItems As Integer = 0
Dim item As Integer
While BlockingCollection(Of Integer).TryTakeFromAny(bcs, item) <> -1
numItems += 1
End While
Console.WriteLine("TryTakeFromAny: retrieved {0} items (should be 10)", numItems)
End Sub
End Class
Poznámky
Volání TryTakeFromAny mohou blokovat, dokud není k dispozici položka, která se má odebrat.
Viz také
Platí pro
TryTakeFromAny(BlockingCollection<T>[], T, Int32)
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí.
public:
static int TryTakeFromAny(cli::array <System::Collections::Concurrent::BlockingCollection<T> ^> ^ collections, [Runtime::InteropServices::Out] T % item, int millisecondsTimeout);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T item, int millisecondsTimeout);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T? item, int millisecondsTimeout);
static member TryTakeFromAny : System.Collections.Concurrent.BlockingCollection<'T>[] * 'T * int -> int
Public Shared Function TryTakeFromAny (collections As BlockingCollection(Of T)(), ByRef item As T, millisecondsTimeout As Integer) As Integer
Parametry
- collections
- BlockingCollection<T>[]
Pole kolekcí, ze které chcete položku odebrat.
- item
- T
Položka, která byla odebrána z jedné z kolekcí.
- millisecondsTimeout
- Int32
Počet milisekund, které mají čekat na odebrání položky, nebo Infinite (-1) čekat neomezeně.
Návraty
Index kolekce v collections
poli, ze kterého byla položka odebrána, nebo -1, pokud položku nelze odebrat.
Výjimky
Nejméně jedna z BlockingCollection<T> instancí byla odstraněna.
Argument collections
má hodnotu null.
millisecondsTimeout
je záporné číslo jiné než -1, které představuje nekonečný časový limit.
-nebo-
Počet hodnot collections
je větší než maximální velikost 62 pro STA a 63 pro MTA.
Argument collections
je matice o délce 0 nebo obsahuje element null.
Nejméně jedna z podkladových kolekcí byla upravena mimo svou BlockingCollection<T> instanci.
Poznámky
Volání TryTakeFromAny mohou blokovat, dokud není k dispozici položka, která se má odebrat.
Viz také
Platí pro
TryTakeFromAny(BlockingCollection<T>[], T, Int32, CancellationToken)
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí.
public:
static int TryTakeFromAny(cli::array <System::Collections::Concurrent::BlockingCollection<T> ^> ^ collections, [Runtime::InteropServices::Out] T % item, int millisecondsTimeout, System::Threading::CancellationToken cancellationToken);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T item, int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T? item, int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);
static member TryTakeFromAny : System.Collections.Concurrent.BlockingCollection<'T>[] * 'T * int * System.Threading.CancellationToken -> int
Public Shared Function TryTakeFromAny (collections As BlockingCollection(Of T)(), ByRef item As T, millisecondsTimeout As Integer, cancellationToken As CancellationToken) As Integer
Parametry
- collections
- BlockingCollection<T>[]
Pole kolekcí, ze které chcete položku odebrat.
- item
- T
Položka, která byla odebrána z jedné z kolekcí.
- millisecondsTimeout
- Int32
Počet milisekund, které mají čekat na odebrání položky, nebo Infinite (-1) čekat neomezeně.
- cancellationToken
- CancellationToken
Token zrušení, který chcete sledovat.
Návraty
Index kolekce v collections
poli, ze kterého byla položka odebrána, nebo -1, pokud položku nelze odebrat.
Výjimky
Hodnota CancellationToken se zruší.
Nejméně jedna z podkladových kolekcí byla upravena mimo svou BlockingCollection<T> instanci.
Argument collections
má hodnotu null.
millisecondsTimeout
je záporné číslo jiné než -1, které představuje nekonečný časový limit.
-nebo-
Počet hodnot collections
je větší než maximální velikost 62 pro STA a 63 pro MTA.
Argument collections
je matice o délce 0 nebo obsahuje element null.
Nejméně jedna z BlockingCollection<T> instancí byla odstraněna.
Poznámky
Volání TryTakeFromAny mohou blokovat, dokud není k dispozici položka, která se má odebrat.
Viz také
Platí pro
TryTakeFromAny(BlockingCollection<T>[], T, TimeSpan)
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
- Zdroj:
- BlockingCollection.cs
Pokusí se odebrat položku z některé ze zadaných BlockingCollection<T> instancí.
public:
static int TryTakeFromAny(cli::array <System::Collections::Concurrent::BlockingCollection<T> ^> ^ collections, [Runtime::InteropServices::Out] T % item, TimeSpan timeout);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T item, TimeSpan timeout);
public static int TryTakeFromAny (System.Collections.Concurrent.BlockingCollection<T>[] collections, out T? item, TimeSpan timeout);
static member TryTakeFromAny : System.Collections.Concurrent.BlockingCollection<'T>[] * 'T * TimeSpan -> int
Public Shared Function TryTakeFromAny (collections As BlockingCollection(Of T)(), ByRef item As T, timeout As TimeSpan) As Integer
Parametry
- collections
- BlockingCollection<T>[]
Pole kolekcí.
- item
- T
Položka, která byla odebrána z jedné z kolekcí.
- timeout
- TimeSpan
Jedná TimeSpan se o počet milisekund, které se mají čekat, nebo TimeSpan hodnota představující -1 milisekund, která má čekat na dobu neurčitou.
Návraty
Index kolekce v collections
poli, ze kterého byla položka odebrána, nebo -1, pokud položku nelze odebrat.
Výjimky
Nejméně jedna z BlockingCollection<T> instancí byla odstraněna.
Argument collections
má hodnotu null.
timeout
je záporné číslo jiné než -1 milisekund, které představuje nekonečný časový limit.
-nebo-
timeout
je větší než Int32.MaxValue.
-nebo-
Počet hodnot collections
je větší než maximální velikost 62 pro STA a 63 pro MTA.
Argument collections
je matice o délce 0 nebo obsahuje element null.
Nejméně jedna z podkladových kolekcí byla upravena mimo svou BlockingCollection<T> instanci.
Poznámky
Volání TryTakeFromAny mohou blokovat, dokud není k dispozici položka, která se má odebrat.