Compartilhar via


IReliableConcurrentQueue<T>.Count Propriedade

Definição

Obtém o número de valores no IReliableConcurrentQueue<T>.

public long Count { get; }
member this.Count : int64
Public ReadOnly Property Count As Long

Valor da propriedade

O número de valores no IReliableConcurrentQueue<T>.

Exceções

No momento, o réplica não é legível.

Exemplos

Este exemplo mostra como monitorar a contagem da fila infinitamente, até que o token de cancelamento seja cancelado.

protected override async Task RunAsync(CancellationToken cancellationToken)
{
    var concurrentQueue = await this.StateManager.GetOrAddAsync<IReliableConcurrentQueue<long>>(new Uri("fabric:/concurrentQueue"));

    // Assumption: values are being enqueued/dequeued in another place (e.g. the communication listener).
    var observer = Task.Run(
        async () =>
            {
                while (true)
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    try
                    {
                        Console.WriteLine("Count: " + concurrentQueue.Count);
                    }
                    catch (FabricNotReadableException e)
                    {
                        // Retry until the queue is readable or a different exception is thrown.
                        Console.WriteLine("Queue is not readable, retrying the observation: " + e);
                    }
                    catch (FabricObjectClosedException e)
                    {
                        // Gracefully exit as this is happening due to replica close.
                        Console.WriteLine("Replica is closing, stopping observer: " + e);
                        return;
                    }

                    await Task.Delay(TimeSpan.FromMilliseconds(100), cancellationToken);
                }
            },
        cancellationToken);
}

Comentários

Essa contagem representa o número de valores atualmente visíveis para TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>). Enqueues não confirmados não aumentarão a contagem, no entanto, Dequeues não confirmados diminuirá a contagem.

Observe que essa API não usa um parâmetro de transação. Como os efeitos de TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) não são isolados de outras transações, a contagem também não pode ser isolada de outras transações.

Aplica-se a