如何从WndProc调用异步方法?

时间:2018-09-19 11:42:06

标签: c# async-await 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)。

1 个答案:

答案 0 :(得分:2)

这应该有效:

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

或更确切地说:

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