Partilhar via


Eliminar o Reliable Actors e o estado

A libertação de lixo de atores desativados só limpa o objeto do ator, mas não remove os dados armazenados no State Manager de um ator. Quando um ator é reativado, os respetivos dados são novamente disponibilizados através do Gestor de Estado. Nos casos em que os atores armazenam dados no State Manager e são desativados, mas nunca são reativados, poderá ser necessário limpar os respetivos dados.

O Serviço de Ator fornece uma função para eliminar atores de um chamador remoto:

ActorId actorToDelete = new ActorId(id);

IActorService myActorServiceProxy = ActorServiceProxy.Create(
    new Uri("fabric:/MyApp/MyService"), actorToDelete);

await myActorServiceProxy.DeleteActorAsync(actorToDelete, cancellationToken)
ActorId actorToDelete = new ActorId(id);

ActorService myActorServiceProxy = ActorServiceProxy.create(
    new Uri("fabric:/MyApp/MyService"), actorToDelete);

myActorServiceProxy.deleteActorAsync(actorToDelete);

Eliminar um ator tem os seguintes efeitos consoante o ator esteja ou não ativo:

  • Ator Ativo
    • O ator é removido da lista de actores ativos e é desativado.
    • O estado é eliminado permanentemente.
  • Ator Inativo
    • O estado é eliminado permanentemente.

Um ator não pode chamar a eliminação de si mesmo de um dos seus métodos de ator porque o ator não pode ser eliminado durante a execução num contexto de chamada de ator, no qual o runtime obteve um bloqueio em torno da chamada do ator para impor o acesso de thread único.

Para obter mais informações sobre o Reliable Actors, leia o seguinte: