我可能做错了什么,但不明显.我有以下代码:
namespace test
{
class Program
{
static void Main(string[] args)
{
using (var system = ActorSystem.Create("MySystem"))
{
var testPassRetriever = system.ActorOf<PrintActor>();
var task = testPassRetriever.Ask<PrintActorMsg>(new PrintActorMsg());
// prevent the application from exiting before message is handled
task.Wait();
Console.WriteLine("Finished.");
Console.ReadLine();
}
}
}
class PrintActorMsg{}
class PrintActor : ReceiveActor
{
public PrintActor()
{
Receive<PrintActorMsg>(msg => Console.WriteLine("foo"));
}
}
}// namespace test
Run Code Online (Sandbox Code Playgroud)
问题是Ask返回的Task永远不会完成.其状态保持在等待激活状态."Foo"确实打印在命令行上,所以我知道actor正在处理Print消息.在重写的演员PrintMsg中我应该做些什么来标记完成的任务?
您使用ask模式,但从不发回消息.只有在从actor接收到消息时才会完成ask任务.(有时建议)告诉或者"即发即弃"模式不会这样做.
| 归档时间: |
|
| 查看次数: |
3896 次 |
| 最近记录: |