Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo BlockingCollection<T>.TryTakeFromAny (BlockingCollection<T>[], T)

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Prova a rimuovere un elemento da una delle istanze specifiche di BlockingCollection<T>.

Spazio dei nomi:   System.Collections.Concurrent
Assembly:  System (in System.dll)

public static int TryTakeFromAny(
	BlockingCollection<T>[] collections,
	out T item
)

Parametri

collections
Type: System.Collections.Concurrent.BlockingCollection<T>[]

Matrice di raccolte.

item
Type: T

Elemento rimosso da una delle raccolte.

Valore restituito

Type: System.Int32

Indice della raccolta nella matrice collections da cui è stato rimosso l'elemento o -1 se non è stato possibile rimuovere un elemento.

Exception Condition
ObjectDisposedException

Almeno il BlockingCollection<T> istanze è stato eliminato.

ArgumentNullException

Il collections argomento è null.

ArgumentOutOfRangeException

Il numero di collections è maggiore di quella massima di 62 per STA e 63 per MTA.

ArgumentException

Il collections argomento è una matrice di lunghezza 0 o contiene un elemento null.

InvalidOperationException

Almeno uno degli insiemi sottostanti è stato modificato all'esterno del relativo BlockingCollection<T> istanza.

Che una chiamata a TryTakeFromAny venga bloccata fino a quando non è disponibile per rimuovere un elemento.

Nell'esempio seguente viene illustrato come utilizzare il BlockingCollection<T>.TryTakeFromAny metodo:

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);
    }
}

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: