Usuń usługi Reliable Actors i jej stanu
Odzyskiwanie pamięci dezaktywowanych aktorów powoduje tylko wyczyszczenie obiektu aktora, ale nie powoduje usunięcia danych przechowywanych w menedżerze stanu aktora. Po ponownym uaktywnieniu aktora jego dane są ponownie udostępniane za pośrednictwem Menedżera stanu. W przypadkach, gdy aktorzy przechowują dane w programie State Manager i są dezaktywowani, ale nigdy nie są uaktywniane, może być konieczne wyczyszczenie ich danych.
Usługa aktora udostępnia funkcję usuwania aktorów ze zdalnego wywołującego:
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);
Usunięcie aktora ma następujący wpływ w zależności od tego, czy aktor jest obecnie aktywny:
- Aktywny aktor
- Aktor jest usuwany z listy aktywnych aktorów i jest dezaktywowany.
- Jego stan jest trwale usuwany.
- Nieaktywny aktor
- Jego stan jest trwale usuwany.
Aktor nie może wywołać usunięcia z jednej z metod aktora, ponieważ aktor nie może zostać usunięty podczas wykonywania w kontekście wywołania aktora, w którym środowisko uruchomieniowe uzyskało blokadę wokół wywołania aktora w celu wymuszenia dostępu jednowątkowego.
Aby uzyskać więcej informacji na temat elementów Reliable Actors, przeczytaj następujące artykuły: