AK2003 - Error
ReceiveActor.Receive message handler delegate must not be a void async delegate. Use ReceiveAsync instead.
Cause
ReceiveActor.Receive accepts an Action<TMessage> as a delegate, any void async delegate passed as an argument will be invoked as a detached asynchronous function that can cause erroneous message processing behavior.
An example:
using Akka.Actor;
using System.Threading.Tasks;
public sealed class MyActor : ReceiveActor
{
public MyActor()
{
Receive<int>(async msg =>
{
await Task.Yield();
Sender.Tell(msg);
});
}
}
Resolution
using Akka.Actor;
using System.Threading.Tasks;
public sealed class MyActor : ReceiveActor
{
public MyActor()
{
// Use ReceiveAsync() if you're passing an asynchronous delegate
ReceiveAsync<int>(async msg =>
{
await Task.Yield();
Sender.Tell(msg);
});
}
}
Edit this page