Как мне запустить ThreadStart метод с меткой asyn c? - PullRequest
0 голосов
/ 31 января 2020

Я хочу запустить обработку l oop в отдельном потоке:

_processingThread = new Thread(new ThreadStart(DoWork)));

Но DoWork должен быть асинхронным c:

private async Task QueueProcessorDoWork()
{
   while (true)
   {
     await something();
   }
}

Как я могу соединить два вместе? Когда я добавляю async Task, он не совпадает с параметром ThreadStart.

Можно сделать метод, который устанавливает поток async Task, я думаю, но я не уверен, что это будет help.

Какое здесь лучшее решение? Мне нужна моя нить, чтобы начать работать, а затем вернуться.

1 Ответ

1 голос
/ 31 января 2020

Это поставит в очередь указанную работу для запуска на ThreadPool.

_ = Task.Run(() => QueueProcessorDoWork());

Теперь QueueProcessorDoWork должна быть полностью самодостаточной и заботиться о себе. Любые исключения не будут пойманы. Вызывающий поток не может узнать, был ли он успешным или нет.

_ = просто останавливает предупреждение компилятора о том, что вызов не ожидается.

...