Udostępnij za pośrednictwem


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. Gdy aktor zostanie ponownie aktywowany, jego dane są ponownie udostępniane za pośrednictwem Menedżera stanu. W przypadkach, gdy aktorzy przechowują dane w menedżerze stanu i są dezaktywowani, ale nigdy nie są uaktywniane, może być konieczne wyczyszczenie danych.

Usługa aktora udostępnia funkcję usuwania aktorów ze zdalnego obiektu 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 samego siebie 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 informacje: