c# - 如何从 WndProc 调用异步方法?
问题描述
我有一个程序,我使用自定义消息从中调用一些方法WndProc
,如下所示:
protected override void WndProc(ref Message m)
{
switch ((uint)m.Msg)
{
case WM_QUIT:
Application.Exit();
return;
case WM_STARTOP:
Context.TændNas();
m.Result = new IntPtr(1);
break;
}
base.WndProc(ref m);
}
现在我想让这些方法异步。但是,我无法将async
关键字添加到WndProc
覆盖。
如果我制作Context.TændNasAsync
一个async
方法,我该如何调用它WndProc
?
结论:
我接受@Hans Passant 的建议,创建一个事件处理程序async
。这样我就可以async
在 UI 线程上调用该方法,同时保持它异步 ( awaitable
)。
解决方案
这应该有效:
Task.Run(()=>Context.TaendNas());
更确切地说:
Task.Run(async ()=> await Context.TaendNas());
推荐阅读
- c++ - 如何将列表从一个班级复制到另一个班级
- mysql - SQL Delete Erro #1064
- java - Why does binding a TextField to a property which is being updated on another thread end up with the application throwing errors?
- linux - 如何排列变量的内容
- java - 在给定持续时间时计算特定月份的天数
- android - “android”命令已弃用。命令“andriod”不起作用
- swift - SwiftUI Side menu content view switching with animation
- java - does "this" keyword on subclass constructor requires superclass default constructor to be implicitly defined?
- reactjs - Can't store field value from firestore to variable
- c# - 具有程序依赖注入的 Asp.Net 核心规则引擎 - 未找到类型“类型”的构造函数