Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IDialogTask的Void()和PollAsync()方法的作用是什么?_C#_Botframework - Fatal编程技术网

C# IDialogTask的Void()和PollAsync()方法的作用是什么?

C# IDialogTask的Void()和PollAsync()方法的作用是什么?,c#,botframework,C#,Botframework,我正在按照发布的说明为我的机器人创建一个全局处理程序。作为对某些关键字(“帮助”)的回应,我想使用以下命令转发到一个对话框: var replyDialog = new CommonResponsesDialog($"Sometimes I also feel **{state}**..."); var interruption = replyDialog.Void<object, IMessageActivity>(); _task.Call(interruption, null)

我正在按照发布的说明为我的机器人创建一个全局处理程序。作为对某些关键字(“帮助”)的回应,我想使用以下命令转发到一个对话框:

var replyDialog = new CommonResponsesDialog($"Sometimes I also feel **{state}**...");
var interruption = replyDialog.Void<object, IMessageActivity>();
_task.Call(interruption, null);
await _task.PollAsync(token);
var replyDialog=newcommonresponsedialog($“有时我也觉得**{state}**…”);
var interruption=replyDialog.Void();
_任务调用(中断,空);
wait_task.pollsync(令牌);
有两件事尚不清楚:

  • 什么是
    replyDialog.Void()正在做什么?即使读了这本书,我也不明白。为什么我不能直接按下
    replyDialog
  • 什么是
    await\u task.PollAsync(令牌)用于

调用
Void
是将
replyDialog
包装成一个附加对话框,该对话框将负责在子对话框(您的
replyDialog
)完成后重新启动用户的等待消息

.Call
将中断对话框放在堆栈上,
.pollsync
开始运行中断对话框

如果查看
VoidDialog
class(),您将看到:

  • 一旦启动,它就会调用“antecedent”对话框
  • 一旦antecedent对话框完成,将忽略结果并等待新的用户消息
  • 收到新消息后,它将结束将消息传递给原始对话框的
    VoidDialog

  • 参数不应该是
    IAwaitable
    而不是
    IAwaitable
    ?这无关紧要,但问题是/曾经是其他问题。我必须改变我的问题…你读过了吗:这个方法的目的是用一个新的对话框D来包装一个先前的对话框A,以在现有的堆栈顶部对话框L的顶部推动堆栈。我读过了,但对我来说没有多大意义。为什么我要用D包裹A,然后把它推到L上?在我的情况下,A是什么?什么是D?我是什么?为什么不把“A”(我想那是我的
    replyDialog
    )推到堆栈上呢?