刪除 Reliable Actors 及其狀態
已停用動作項目的記憶體回收只會清除動作項目物件;但不會移除動作項目的狀態管理員中儲存的資料。 重新啟用動作項目後,會再次透過狀態管理員提供其資料。 在動作項目將資料儲存於狀態管理員後停用,而永遠不會重新啟用的情況下,可能需要清除其資料。
動作項目服務 提供了從遠端呼叫端刪除動作項目的函式︰
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);
根據動作項目目前是否作用中而定,刪除動作項目具有下列效果︰
- 作用中動作項目
- 動作項目會從作用中動作項目清單中移除並且停用。
- 其狀態會永久刪除。
- 非作用中動作項目
- 其狀態會永久刪除。
動作項目無法從其中一個動作項目方法呼叫刪除本身,因為在動作項目呼叫內容中執行動作項目時無法刪除該動作項目,而執行階段已取得動作項目呼叫的鎖定以強制執行單一執行緒存取。
如需有關 Reliable Actors 的詳細資訊,請參閱下列內容: