假设我们有这个:
private void Input_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
}
然后我添加async-await
,如下所示:
private async void Input_KeyDown(object sender, KeyEventArgs e)
{
await Task.Delay(1000);
e.Handled = true;
}
难道不应该做同样的事情,但只是延迟一秒钟吗?那么为什么不呢?
注意:
我不是在寻求调试帮助,我只是想知道为什么我不能使用async-await
来延迟处理KeyDown
最佳答案
i'm just wondering why can't i use async-await to delay handling the KeyDown
根据定义,事件处理程序是同步的。因此,除非您的代码有办法通知事件处理程序它正在异步操作(例如,WinStore 样式的延迟),否则它必须执行所有“通信”(例如,KeyEventArgs.Handled
)在第一个 await
之前。
如果您通常需要延迟输入,我建议将代码转换为使用 Reactive Extensions .
关于c# - 异步延迟 KeyDown 事件中的 e.handled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26438641/