次の方法で共有


IReliableConcurrentQueue<T>.Count プロパティ

定義

内の値の数を取得します IReliableConcurrentQueue<T>

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

プロパティ値

内の値の IReliableConcurrentQueue<T>数。

例外

現在、レプリカは読み取り可能ではありません。

IReliableConcurrentQueue<T> ランタイムによって閉じられました。

この例では、キャンセル トークンが取り消されるまで、キューの数を無限に監視する方法を示します。

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

注釈

この数は、現在 に表示されている値の数を TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)表します。 コミットされていないエンキューはカウントを増やしませんが、コミットされていない Dequeue はカウントを減らします。

この API はトランザクション パラメーターを受け取らないことに注意してください。 の効果は他の TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) トランザクションから分離されないため、カウントを他のトランザクションから分離することもできません。

適用対象