Reliable Actors en hun status verwijderen
Garbagecollection van gedeactiveerde actoren schoont alleen het actorobject op, maar verwijdert geen gegevens die zijn opgeslagen in de State Manager van een actor. Wanneer een actor opnieuw wordt geactiveerd, worden de bijbehorende gegevens opnieuw beschikbaar gesteld via State Manager. In gevallen waarin actoren gegevens opslaan in State Manager en worden gedeactiveerd maar nooit opnieuw worden geactiveerd, kan het nodig zijn om hun gegevens op te schonen.
De Actor Service biedt een functie voor het verwijderen van actoren van een externe beller:
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);
Het verwijderen van een actor heeft de volgende effecten, afhankelijk van of de actor momenteel actief is:
- Actieve actor
- Actor wordt verwijderd uit de lijst met actieve actoren en wordt gedeactiveerd.
- De status wordt permanent verwijderd.
- Inactieve actor
- De status wordt permanent verwijderd.
Een actor kan de verwijdering niet op zichzelf aanroepen van een van de methoden van de actor omdat de actor niet kan worden verwijderd tijdens het uitvoeren binnen een context van een actoraanroep, waarbij de runtime een vergrendeling heeft verkregen rond de actoraanroep om toegang met één thread af te dwingen.
Lees het volgende voor meer informatie over Reliable Actors: