Как я могу вызвать асинхронный метод из WndProc? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть программа, в которой я использую пользовательское сообщение для вызова некоторых методов из 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 в потоке пользовательского интерфейса, сохраняя его асинхронным (awaitable).

1 Ответ

0 голосов
/ 19 сентября 2018

Это должно работать:

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

, а точнее:

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