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:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários