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: