Terminated.
Disconnect ActorsToBeStopped HashSet, Connect, , . , Connect Connect .
- :
private readonly Dictionary<string, Connect> postponedConnectMessages = new Dictionary<string, Connect>();
private readonly HashSet<string> actorsToBeStopped = new HashSet<string>();
Receive<Disconnected>(t =>
{
var actor = GetActorByName(t.Name);
Context.Stop(actor);
actorsToBeStopped.Add(actor.Path.Name);
});
Receive<Connected>(t =>
{
var actor = GetActorByName(t.Name);
if (actorsToBeStopped.Contains(actor.Path.Name))
{
postponedConnectMessages[actor.Path.Name] = t;
return;
}
}
Receive<Terminated>(t =>
{
var deadActorName = t.ActorRef.Path.Name;
actorsToBeStopped.Remove(deadActorName);
if (postponedConnectMessages.ContainsKey(deadActorName))
{
var connectMessage = postponedConnectMessages[deadActorName];
postponedConnectMessages.Remove(deadActorName);
var actor = GetActorByName(connectMessage.Name);
}
}
, , Akka.TestKit TestActor :
public void StopTest()
{
var t = CreateTestActor("AAAA");
Watch(t);
Sys.Stop(t);
ExpectTerminated(t, TimeSpan.FromSeconds(10));
var t2 = CreateTestActor("AAAA");
}
, , ExpectTerminated, , .