Estoy usando un sistema de actor para calcular algunos datos, y luego quiero que devuelva el resultado del punto final del actor no solicitado originalmente a mi programa no orientado al actor. Intenté usar Ask o Ask<> con await o Result pero tampoco ayudó. Este es un ejemplo simplificado de lo que quiero lograr:
class Program { public static ActorSystem actorSystem; static async Task Main(string[] args) { actorSystem = ActorSystem.Create("ActorSystem"); var mainActor = actorSystem.ActorOf(Props.Create(() => new MainActor()), "main"); var actorAnswer = await mainActor.Ask<object[]>(new Start(true)); //Some operations using actorAnswer from actor ... } }Y MainActor simplificado:
class MainActor : ReceiveActor { public MainActor() { Receive<Start>(m => { _commanderActor.Tell(new SomeMessage()); }); Receive<IEnumerable<int[]>>(m => { if (condition) { Sender.Tell(new object[] {x, y}); } else { _commanderActor.Tell(new SomeMessage()); } }); } }