IReliableConcurrentQueue<T>.Count Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
O IReliableConcurrentQueue<T> foi fechado pelo runtime.
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
Azure SDK for .NET