假设我有两个状态的抽象演员
Ready和Busy。
在忙碌状态下,我只想接收特定类型的消息,例如PauseJob,CancelJob所有其他消息,例如StartNewJob被隐藏。
问题:如果我设置SetReceiveTimeout()为 Busy 状态,它是否仅适用于我在此状态 ( PauseJob, CancelJob) 下实际处理的消息,还是也考虑隐藏的消息?
提前致谢
假设我有两个状态的抽象演员
Ready和Busy。
在忙碌状态下,我只想接收特定类型的消息,例如PauseJob,CancelJob所有其他消息,例如StartNewJob被隐藏。
问题:如果我设置SetReceiveTimeout()为 Busy 状态,它是否仅适用于我在此状态 ( PauseJob, CancelJob) 下实际处理的消息,还是也考虑隐藏的消息?
提前致谢
简而言之,隐藏的消息也被考虑在内,因为actor在隐藏消息时仍然处于活动状态。
当您使用SetRecieveTimeout()该RecieveTimeout消息时,演员在指定的时间内没有收到任何消息时发送。
private void Busy()
{
SetReceiveTimeout(TimeSpan.FromSeconds(1));
Receive<PauseJob>(msg =>
{
// Do something
});
Receive<ReceiveTimeout>(timeout =>
{
// I won't run until 1 second after
// all messages are processed or stashed
});
ReceiveAny(msg =>
{
Stash.Stash();
});
}