Я построен как простой актер, который принимает два сообщения: TicketValidated и BarrierPu sh, но переключение происходит не так, как предполагалось.
public class TurnstileActor : ReceiveActor
{
public TurnstileActor()
{
Become(Locked);
}
public void Locked()
{
Receive<TicketValidated>(msg => Become(Unlocked));
Receive<BarrierPush>(msg => { Console.WriteLine("Locked");});
}
public void Unlocked()
{
Receive<TicketValidated>(msg =>
Console.WriteLine("Unlocked"));
Receive<BarrierPush>(msg => Become(Locked));
}
}
Основной класс
var system = ActorSystem.Create("ActorSystem");
var actor = system.ActorOf<TurnstileActor>("actor");
actor.Tell(new TicketValidated());
Фактическое выполнение: метод Locked () вызывается из конструктора и принимается сообщение TicketValidated . Become (Unlocked) выполняется правильно и входит в метод Unlocked () , но затем Console.WriteLine ("Unlocked") не вызывается.
Не нарушена ли библиотека Akka. Net?