IRemindable
有一个具有以下定义的服务结构参与者,它通过实现接口注册然后注销。这个演员也有一个静态字典。
[StatePersistence(StatePersistence.None)]
[ActorService(Name = "ProcessorActorService")]
public class ProcessorActor : BaseActor, IRemindable
{
private static Dictionary<object,object> _myDictionary;
}
我的理解是,如果每个参与者的 guid 在实例化时不同,则服务结构会创建同一参与者的多个实例。当每个演员实例被创建时,提醒的动作将一个对象添加到字典中以供以后处理。
我的期望/理解是字典的范围在同一个实例化的actor内,但是当下一个actor的实例出现时,我意识到_myDictionary
有添加到另一个actor中的节点!所以,它给人的印象是字典在所有相同actor类型的实时实例之间共享!这是正确的理解还是再次调用了同一个已经实例化的actor?!
由于参与者实现了IRemindable
我希望 GC 在取消注册后将参与者从集群中删除,但它似乎没有发生。静态字典是否有可能导致演员的实例一直存在?