Excluir Reliable Actors e o respectivo estado

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

O Serviço de Ator fornece uma função para excluir 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);

Os efeitos de excluir um ator são descritos abaixo de acordo com o estado, ativo ou inativo, do ator no momento.

  • Ator ativo
    • O ator é removido da lista de atores ativos e é desativado.
    • Seu estado é excluído permanentemente.
  • Ator inativo
    • Seu estado é excluído permanentemente.

Um ator não pode chamar a exclusão em si mesmo a partir de um de seus métodos de ator porque o ator não pode ser excluído durante a execução em um contexto de chamada de ator, no qual o runtime obteve um bloqueio em torno da chamada de ator para impor o acesso single-threaded.

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