【问题标题】:How can to set the wait time await result [duplicate]如何设置等待时间等待结果[重复]
【发布时间】:2019-01-01 19:29:22
【问题描述】:

我的 ms bot 框架中有:

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
    var activity = await result as Activity;
    context.Wait(MessageReceivedAsync);
}

如何设置等待时间await result

【问题讨论】:

    标签: c# async-await botframework


    【解决方案1】:

    我建议您尝试以下方法:

    private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
    {
        // Set the delay to whatever timeout interval you need (in milliseconds)
        if (Task.WaitAny(result.ToTask(), Task.Delay(1000)) == result) 
        {
            var activity = await result as Activity;
        }
        else
        {
            // Didn't complete during the defined interval
        }
    
        context.Wait(MessageReceivedAsync);
    }
    

    更新

    添加了ToTask() 的用法,将IAwaitable 转换为可与WhenAny 一起使用的Task

    希望对你有帮助!

    【讨论】:

    • Thakns 人,但我在字符串 'if (Task.WaitAny(result, Task.Delay(1000)) == result)' 中有错误 - 参数 1:无法从“Microsoft.Bot. Builder.Dialogs.IAwaitable ”到“System.Threading.Tasks.Task”。我认为转换不是一个好主意。
    • 查看有关如何将IAwaitable 转换为Task 的更新
    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2019-12-15
    • 2021-04-10
    相关资源
    最近更新 更多