Partilhar via


Eliminar o Reliable Actors e o estado

A coleta de lixo de atores desativados apenas limpa o objeto do ator, mas não remove os dados armazenados no State Manager de um ator. Quando um ator é reativado, seus dados são novamente disponibilizados a ele através do Gestor Estadual. Nos casos em que os atores armazenam dados no State Manager e são desativados, mas nunca reativados, pode ser necessário limpar seus dados.

O Ator Service 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);

A exclusão de um ator tem os seguintes efeitos, dependendo se ele está ou não ativo no momento:

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

Um ator não pode chamar delete em si mesmo de um de seus métodos de ator porque o ator não pode ser excluído durante a execução dentro de um contexto de chamada de ator, no qual o tempo de execução obteve um bloqueio em torno da chamada de ator para impor acesso de thread único.

Para obter mais informações sobre atores confiáveis, leia o seguinte: