如何从 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());
我有一个程序,我在其中使用自定义消息从 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());