C# 为什么被调用的对话框从另一个对话框调用时不等待MessageReceivedAsync

C# 为什么被调用的对话框从另一个对话框调用时不等待MessageReceivedAsync,c#,botframework,C#,Botframework,大家好,我正在使用Microsoft bot框架构建一个bot,我创建了一个分派对话框,当它从LUIS接收结果时调用另一个对话框,但是当我使用context.Forward()方法调用下一个对话框时,它通过公共异步任务StartAsync(IDialogContext context) 但是,尽管我使用了context.Wait(MessageReceivedAsync) 方法,我的对话框从不等待用户的消息通过返回调用它的对话框继续执行 我读答案 但这并不能解决我的问题 这是我如何调用该对话框的

大家好,我正在使用Microsoft bot框架构建一个bot,我创建了一个分派对话框,当它从LUIS接收结果时调用另一个对话框,但是当我使用
context.Forward()
方法调用下一个对话框时,它通过
公共异步任务StartAsync(IDialogContext context)
但是,尽管我使用了
context.Wait(MessageReceivedAsync)
方法,我的对话框从不等待用户的消息通过返回调用它的对话框继续执行

我读答案 但这并不能解决我的问题

这是我如何调用该对话框的:

await context.Forward(scheduleDialog,ScheduleDialogTerminated,context.MakeMessage(), CancellationToken.None);
这是一个名为:

public class ScheduleDialog : IDialog
    {
        IScheduler scheduler;
        string timeEntity;
        string appointmentEntity;
        string dateEntity;

        public ScheduleDialog(IScheduler scheduler, string date, string time, string appointment) : base()
        {
            dateEntity = date;
            timeEntity = time;
            appointmentEntity = appointment;

            this.scheduler = scheduler;
        }

        public async Task StartAsync(IDialogContext context)
        {
            string message = context.Activity.AsMessageActivity().Text;
            await context.PostAsync($"Scheduling... {message}");
            context.Wait(MessageReceivedAsync);
        }

        public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
        {
            await context.PostAsync("Waiting for message...");
        }
    }
公共类调度对话框:IDialog
{
IScheduler调度器;
字符串时间实体;
字符串指定实体;
字符串数据实体;
公共ScheduleDialog(isScheduler调度器、字符串日期、字符串时间、字符串约会):base()
{
dateEntity=日期;
时间实体=时间;
任命实体=任命;
this.scheduler=调度程序;
}
公共异步任务StartAsync(IDialogContext上下文)
{
字符串消息=context.Activity.AsMessageActivity().Text;
wait context.PostAsync($“调度…{message}”);
Wait(MessageReceivedAsync);
}
公共异步任务消息ReceivedAsync(IDialogContext上下文,IAwaitable参数)
{
wait context.PostAsync(“等待消息…”);
}
}

MessageReceivedAsync
方法从未被调用,因为我在StartAsync方法中指定了上下文应该等待它

您需要添加一个
context.wait(MessageReceivedAsync)
MessageReceivedAsync
方法的末尾

请把你的代码贴在这里,我是这样称呼这个对话的:你的评论似乎被删掉了。请用详细信息编辑帖子。我编辑了帖子请现在查看我的问题是,尽管对话框调用得很好,但它从不等待用户消息,并在通过starAsync方法后立即退出。这有帮助吗?如果是,请将问题标记为已回答。