I suggest you try something like the following:
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);
}
Update
Added usage of ToTask() to transform the IAwaitable
to a Task
that can be used with WhenAny
.
Hope it helps!