Partager via


IReliableConcurrentQueue<T>.Count Propriété

Définition

Obtient le nombre de valeurs dans le IReliableConcurrentQueue<T>.

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

Valeur de propriété

Nombre de valeurs dans .IReliableConcurrentQueue<T>

Exceptions

Le réplica n’est actuellement pas lisible.

Exemples

Cet exemple montre comment surveiller le nombre de files d’attente à l’infini, jusqu’à ce que le jeton d’annulation soit annulé.

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

Remarques

Ce nombre représente le nombre de valeurs actuellement visibles pour TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>). Les files d’attente non validées n’augmentent pas le nombre, mais les files d’attente non validées diminuent le nombre.

Notez que cette API ne prend pas de paramètre de transaction. Étant donné que les effets de TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) ne sont pas isolés des autres transactions, le nombre ne peut pas non plus être isolé des autres transactions.

S’applique à