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