假设我有两个状态的抽象演员
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();
});
}