Ta bort Reliable Actors och deras tillstånd

Skräpinsamling av inaktiverade aktörer rensar bara aktörsobjektet, men det tar inte bort data som lagras i en aktörs state manager. När en aktör återaktiveras görs dess data återigen tillgängliga för den via State Manager. I fall där aktörer lagrar data i State Manager och inaktiveras men aldrig återaktiveras kan det vara nödvändigt att rensa deras data.

Aktörstjänsten tillhandahåller en funktion för att ta bort aktörer från en fjärruppringare:

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);

Att ta bort en aktör har följande effekter beroende på om aktören för närvarande är aktiv eller inte:

  • Aktiv aktör
    • Aktören tas bort från listan över aktiva aktörer och inaktiveras.
    • Dess tillstånd tas bort permanent.
  • Inaktiv aktör
    • Dess tillstånd tas bort permanent.

En aktör kan inte anropa borttagning på sig själv från någon av sina aktörsmetoder eftersom aktören inte kan tas bort när den körs i en aktörsanropskontext, där körningen har fått ett lås runt aktörsanropet för att framtvinga enkeltrådad åtkomst.

Mer information om Reliable Actors finns i följande: