Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接收参与者接收<;T>;在Akka.net中,它不起作用_C#_.net Core_Actor_Akka.net - Fatal编程技术网

C# 接收参与者接收<;T>;在Akka.net中,它不起作用

C# 接收参与者接收<;T>;在Akka.net中,它不起作用,c#,.net-core,actor,akka.net,C#,.net Core,Actor,Akka.net,我是Akka.net的新手,我运行在linux上,使用.NETCore3.1,我写了一个非常简单的代码,但它不起作用,我不知道为什么 这是我的program.cs,在这里我创建了ActorSystem并简单地调用了另一个actor using Akka.Actor; namespace PBFT { class Program { static void Main(string[] args) {

我是Akka.net的新手,我运行在linux上,使用.NETCore3.1,我写了一个非常简单的代码,但它不起作用,我不知道为什么

这是我的program.cs,在这里我创建了ActorSystem并简单地调用了另一个actor

using Akka.Actor;

namespace PBFT
{
    class Program
    {
        static void Main(string[] args)
        {
            
            var MyActorSystem = ActorSystem.Create("ActorSystem");
            var Primary = MyActorSystem.ActorOf<PrimaryActor>();

            Primary.Tell("Test");
        }
    }
}

使用Akka.Actor;
名称空间PBFT
{
班级计划
{
静态void Main(字符串[]参数)
{
var MyActorSystem=ActorSystem.Create(“ActorSystem”);
var Primary=MyActorSystem.ActorOf();
主要。告诉(“测试”);
}
}
}
这是第一个应该接收消息并将其输出到控制台的参与者

using Akka.Actor;
using Akka;
using Akka.Event;

namespace PBFT
{
    class PrimaryActor : ReceiveActor
    {
        private readonly ILoggingAdapter log = Context.GetLogger();
        public PrimaryActor()
        {
            Receive<string>(message => System.Console.WriteLine(message));
        }
    }
}
使用Akka.Actor;
使用Akka;
使用Akka.Event;
名称空间PBFT
{
类主要参与者:ReceiveActor
{
private readonly ilogginadapter log=Context.GetLogger();
公共主要参与者()
{
接收(message=>System.Console.WriteLine(message));
}
}
}

问题是没有错误,并且参与者没有处理消息,我是否遗漏了什么?

在Akka.NET中,参与者之间的消息是异步传递的。在您的示例中,您将
告诉参与者一条消息,然后在参与者有机会处理该消息之前立即退出程序

在您的示例中,您可以挂起主线程(例如使用
Console.ReadLine()
),或者-如果您需要确保actor在继续之前已经处理了消息-在调用方使用
actor.Ask(message,cancellationToken)
的组合(该组合将返回任务,一旦actor返回响应,该组合将完成)和
发送者。告诉(响应)
演员的接收方法:

class PrimaryActor:ReceiveActor
{
private readonly ilogginadapter log=Context.GetLogger();
公共主要参与者()
{
接收(消息=>{
系统控制台写入线(消息);
Sender.Tell(new object());//或您想要的任何其他响应
});
}
}
班级计划
{
静态异步任务主(字符串[]args)
{
var MyActorSystem=ActorSystem.Create(“ActorSystem”);
var Primary=MyActorSystem.ActorOf();
等待Primary.Ask(“测试”,默认值(CancellationToken));
}
}

异步传递Akka.NET中参与者之间的消息。在您的示例中,您将
告诉参与者一条消息,然后在参与者有机会处理该消息之前立即退出程序

在您的示例中,您可以挂起主线程(例如使用
Console.ReadLine()
),或者-如果您需要确保actor在继续之前已经处理了消息-在调用方使用
actor.Ask(message,cancellationToken)
的组合(该组合将返回任务,一旦actor返回响应,该组合将完成)和
发送者。告诉(响应)
演员的接收方法:

class PrimaryActor:ReceiveActor
{
private readonly ilogginadapter log=Context.GetLogger();
公共主要参与者()
{
接收(消息=>{
系统控制台写入线(消息);
Sender.Tell(new object());//或您想要的任何其他响应
});
}
}
班级计划
{
静态异步任务主(字符串[]args)
{
var MyActorSystem=ActorSystem.Create(“ActorSystem”);
var Primary=MyActorSystem.ActorOf();
等待Primary.Ask(“测试”,默认值(CancellationToken));
}
}