【发布时间】:2016-08-31 08:45:55
【问题描述】:
我在我的机器人项目中遇到了 InvalidNeedException,但我无法理解该异常的确切含义。
Microsoft.Bot.Builder.Internals.Fibers.InvalidNeedException occurred
HResult=-2146233079
Message=invalid need: expected Call, have Wait
Source=Microsoft.Bot.Builder
StackTrace:
at Microsoft.Bot.Builder.Internals.Fibers.Frame`1.Microsoft.Bot.Builder.Internals.Fibers.IWaiter<C>.NextWait[T]()
InnerException:
以下方法都属于同一个Dialog类
[LuisIntent("Test")]
public async Task GetReleaseTickets(IDialogContext context, LuisResult result)
{
await ProcessEntities(context, result.Entities);
await context.PostAsync("done");
context.Wait(MessageReceived);
}
private async Task ProcessEntities(IDialogContext context, IList<EntityRecommendation> entities) {
context.Wait<bool>(ProcessX);
context.Wait<bool>(ProcessY); // exception thrown here
}
在哪里
public async Task ProcessX(IDialogContext context, IAwaitable<bool> argument) {
//do X
context.Done();
}
public async Task ProcessY(IDialogContext context, IAwaitable<bool> argument) {
//do Y
context.Done();
}
看来我不能调用 context.Wait 连续两次,但我不确定调用两个异步方法的推荐方法是什么,并且想了解“预期调用有什么”等等”要我做。我不想在该行调用 context.Call,只要确保该方法异步完成即可。
【问题讨论】:
标签: c# asynchronous botframework