如何从 WndProc 调用异步方法?

How can I call an asynchronous method from 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 事件处理程序。这样我就可以在 UI 线程上调用 async 方法,同时保持异步 (awaitable).

这应该有效:

Task.Run(()=>Context.TaendNas());

或者更确切地说:

Task.Run(async ()=> await Context.TaendNas());