IReliableConcurrentQueue<T>.Count Eigenschaft

Definition

Ruft die Anzahl der Werte in ab IReliableConcurrentQueue<T>.

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

Eigenschaftswert

Die Anzahl der Werte im IReliableConcurrentQueue<T>.

Ausnahmen

Das Replikat ist derzeit nicht lesbar.

Die IReliableConcurrentQueue<T> wurde von der Runtime geschlossen.

Beispiele

In diesem Beispiel wird gezeigt, wie die Anzahl der Warteschlange unendlich überwacht wird, bis das Abbruchtoken abgebrochen wird.

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

Hinweise

Diese Anzahl stellt die Anzahl der Werte dar, die derzeit für sichtbar sind TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>). Nicht commitierte Enqueues erhöhen die Anzahl nicht, aber nicht festgelegte Dequeues verringern die Anzahl.

Beachten Sie, dass diese API keinen Transaktionsparameter akzeptiert. Da die Auswirkungen von TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) nicht von anderen Transaktionen isoliert sind, kann die Anzahl auch nicht von anderen Transaktionen isoliert werden.

Gilt für: