0
比方说,我们有以下方法:继续在特定的等待
public async Task HandleAsync(MessageContext context, RegisterAccount account)
{
var user = blabla;
await _repository.CreateAsync(user);
await _emailHandler.Send(new ActivationEmail(user));
await _context.WaitForAsync<AccountActivated>(x=> x.AccountId == user.Id);
user.Activate();
_repository.UpdateAsync(user);
}
在WaitForAsync
调用我发布内部邮件服务,并因此允许其继续处理其他消息。所以这个类实例正在等待我的自定义服务器。
这效果很好。
不过,我也坚持国家才能够退出应用程序,然后继续重启进程后。如果我使用单独的方法,这将工作得很好(只需调用continuation方法)。
但是,由于异步/等待重写代码,在重启之后接收到正确的消息时,是否可以告诉.NET在“WaitForAsync”之后继续? (即创建类,设置状态,告诉它在WaitForAsync
行后继续,而不是从调用方法开始)
(是的,我只是有关如何异步/等待更改代码的基本知识,因此问题)
不,您应该在'await _context.WaitForAsync'之后放置该代码。否则,您可能需要基于事件的系统而不是基于异步的系统。 – GSerg
请注意,最后一行可能会缺少“await”。 – GSerg
如果发生这种情况,您可以在状态中保留一些额外的指示条件(如果它不是已经可确定的)并且'if()'出现在HandleAsync()的前几行? – sellotape