Compartir por


Eliminar Reliable Actors y su estado

La recolección de elementos no utilizados de actores desactivados solo elimina el objeto del actor, pero no los datos que se almacenan en el administrador de estados de un actor. Cuando se vuelve a activar un actor, sus datos vuelven a estar disponibles mediante el administrador de estados. Es posible que, en los casos en que los actores almacenan datos en el administrador de estados y se desactivan, pero nunca se vuelven a activar, haya que limpiar los datos.

El servicio de actor proporciona una función para eliminar actores desde un llamador 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);

La eliminación de un actor tiene las siguientes consecuencias, con independencia de que esté activo o no en ese momento:

  • Actor activo
    • El actor se quita de la lista de actores activos y se desactiva.
    • Su estado se elimina permanentemente.
  • Actor inactivo
    • Su estado se elimina permanentemente.

Un actor no puede llamar a Delete por sí mismo desde uno de sus métodos de actor. Esto se debe a que el actor no se puede eliminar mientras se está ejecutando en un contexto de llamada de actor, en el que el entorno en tiempo de ejecución ha obtenido un bloqueo en la llamada de actor para exigir el acceso uniproceso.

Para obtener más información sobre Reliable Actors, lea la información siguiente: