c# - 异步延迟 KeyDown 事件中的 e.handled

标签 c# asynchronous async-await

假设我们有这个:

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/

相关文章:

C# 多个任务在调用行上被阻止

node.js - 限制对 NodeJS 中 API 的并发请求以及 Async/Await

javascript - 等待而不是等待解决 promise

rust - 我如何从 actix 处理程序中调用固定的 future ?

c# - 保持 Canvas 元素相对于背景图像定位

c# - 将嵌套 SQL 查询转换为 LINQ 查询

c# - 发布后人们是否可以访问源代码?

javascript - 加载脚本时何时使用 async vs defer?

c# - 如何为 T4 预处理模板指定模板类可见性?

使用 std::async 时的 C++ "Could not deduce template argument"