다음을 통해 공유


BlockingCollection<T>.TryTakeFromAny 메서드

정의

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

오버로드

TryTakeFromAny(BlockingCollection<T>[], T)

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

TryTakeFromAny(BlockingCollection<T>[], T, Int32)

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

TryTakeFromAny(BlockingCollection<T>[], T, Int32, CancellationToken)

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

TryTakeFromAny(BlockingCollection<T>[], T, TimeSpan)

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

TryTakeFromAny(BlockingCollection<T>[], T)

Source:
BlockingCollection.cs
Source:
BlockingCollection.cs
Source:
BlockingCollection.cs

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

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

매개 변수

collections
BlockingCollection<T>[]

컬렉션의 배열입니다.

item
T

컬렉션 중 하나에서 제거된 항목입니다.

반환

항목이 제거된 collections 배열의 컬렉션 인덱스이거나, 항목을 제거할 수 없으면 -1입니다.

예외

BlockingCollection<T> 인스턴스가 하나 이상 삭제되었습니다.

collections 인수가 null입니다.

collections 횟수가 최대 크기(STA의 경우 62, MTA의 경우 63)보다 큽니다.

collections 인수가 길이가 0 인 배열이거나 Null 요소를 포함합니다.

기본 컬렉션 중 하나 이상이 BlockingCollection<T> 인스턴스 외부에서 수정되었습니다.

예제

다음 예제에서는 메서드를 사용하는 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

설명

항목을 제거할 수 있을 때까지 TryTakeFromAny에 대한 호출이 차단될 수 있습니다.

추가 정보

적용 대상

TryTakeFromAny(BlockingCollection<T>[], T, Int32)

Source:
BlockingCollection.cs
Source:
BlockingCollection.cs
Source:
BlockingCollection.cs

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

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

매개 변수

collections
BlockingCollection<T>[]

항목을 제거할 컬렉션의 배열입니다.

item
T

컬렉션 중 하나에서 제거된 항목입니다.

millisecondsTimeout
Int32

항목이 제거될 때까지 대기할 시간(밀리초) 또는 Infinite (-1)이 무기한 대기하는 횟수입니다.

반환

항목이 제거된 collections 배열의 컬렉션 인덱스이거나, 항목을 제거할 수 없으면 -1입니다.

예외

BlockingCollection<T> 인스턴스가 하나 이상 삭제되었습니다.

collections 인수가 null입니다.

millisecondsTimeout이 시간 제한 없음을 나타내는 -1 이외의 음수인 경우

또는

collections 횟수가 최대 크기(STA의 경우 62, MTA의 경우 63)보다 큽니다.

collections 인수가 길이가 0 인 배열이거나 Null 요소를 포함합니다.

기본 컬렉션 중 하나 이상이 BlockingCollection<T> 인스턴스 외부에서 수정되었습니다.

설명

항목을 제거할 수 있을 때까지 TryTakeFromAny에 대한 호출이 차단될 수 있습니다.

추가 정보

적용 대상

TryTakeFromAny(BlockingCollection<T>[], T, Int32, CancellationToken)

Source:
BlockingCollection.cs
Source:
BlockingCollection.cs
Source:
BlockingCollection.cs

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

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

매개 변수

collections
BlockingCollection<T>[]

항목을 제거할 컬렉션의 배열입니다.

item
T

컬렉션 중 하나에서 제거된 항목입니다.

millisecondsTimeout
Int32

항목이 제거될 때까지 대기할 시간(밀리초) 또는 Infinite (-1)이 무기한 대기하는 횟수입니다.

cancellationToken
CancellationToken

관찰할 취소 토큰입니다.

반환

항목이 제거된 collections 배열의 컬렉션 인덱스이거나, 항목을 제거할 수 없으면 -1입니다.

예외

CancellationToken이 취소되었습니다.

기본 컬렉션 중 하나 이상이 BlockingCollection<T> 인스턴스 외부에서 수정되었습니다.

collections 인수가 null입니다.

millisecondsTimeout이 시간 제한 없음을 나타내는 -1 이외의 음수인 경우

또는

collections 횟수가 최대 크기(STA의 경우 62, MTA의 경우 63)보다 큽니다.

collections 인수가 길이가 0 인 배열이거나 Null 요소를 포함합니다.

BlockingCollection<T> 인스턴스가 하나 이상 삭제되었습니다.

설명

항목을 제거할 수 있을 때까지 TryTakeFromAny에 대한 호출이 차단될 수 있습니다.

추가 정보

적용 대상

TryTakeFromAny(BlockingCollection<T>[], T, TimeSpan)

Source:
BlockingCollection.cs
Source:
BlockingCollection.cs
Source:
BlockingCollection.cs

지정된 BlockingCollection<T> 인스턴스 중 하나에서 항목을 제거하려고 시도합니다.

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

매개 변수

collections
BlockingCollection<T>[]

컬렉션의 배열입니다.

item
T

컬렉션 중 하나에서 제거된 항목입니다.

timeout
TimeSpan

대기할 시간(밀리초)을 나타내는 TimeSpan이거나, 무한 대기하도록 -1밀리초를 나타내는 TimeSpan입니다.

반환

항목이 제거된 collections 배열의 컬렉션 인덱스이거나, 항목을 제거할 수 없으면 -1입니다.

예외

BlockingCollection<T> 인스턴스가 하나 이상 삭제되었습니다.

collections 인수가 null입니다.

timeout 는 무한 제한 시간을 나타내는 -1밀리초 이외의 음수입니다.

또는

timeoutInt32.MaxValue보다 큽 수 있습니다.

또는

collections 횟수가 최대 크기(STA의 경우 62, MTA의 경우 63)보다 큽니다.

collections 인수가 길이가 0 인 배열이거나 Null 요소를 포함합니다.

기본 컬렉션 중 하나 이상이 BlockingCollection<T> 인스턴스 외부에서 수정되었습니다.

설명

항목을 제거할 수 있을 때까지 TryTakeFromAny에 대한 호출이 차단될 수 있습니다.

추가 정보

적용 대상