C# 如何启动标记为async的方法?

C# 如何启动标记为async的方法?,c#,multithreading,async-await,C#,Multithreading,Async Await,我想在单独的线程上运行一个处理循环: \u processingThread=new Thread(new ThreadStart(DoWork)) 但DoWork需要异步: private async Task QueueProcessorDoWork() { while (true) { await something(); } } 我如何将两者连接在一起?当我添加异步任务时,它与ThreadStart的参数不匹配 我认为,设置线程异步任务的方法是可能的,但我不

我想在单独的线程上运行一个处理循环:

\u processingThread=new Thread(new ThreadStart(DoWork))

但DoWork需要异步:

private async Task QueueProcessorDoWork()
{
   while (true)
   {
     await something();
   }
}
我如何将两者连接在一起?当我添加
异步任务时,它与ThreadStart的参数不匹配

我认为,设置线程
异步任务的方法是可能的,但我不确定这是否有帮助


这里最好的解决方案是什么?我需要我的线程开始运行,然后返回。

这将对指定的工作进行排队,以便在线程池上运行

_ = Task.Run(() => QueueProcessorDoWork());
QueueProcessorDowWork现在必须完全自给自足并自行处理。任何抛出的异常都不会被捕获。调用线程无法知道它是否成功


\u=
只会停止编译器警告未等待调用。

\u processingTask=Task.Run(QueueProcessorDoWork)
?它是否创建新线程?基本上,这是windows服务的一部分,因此OnStart()方法需要设置某种无限处理循环,然后该方法必须立即返回。我认为你必须创建一个新的线程来实现这一点。但是可能是一个永无止境的
任务
完成了任务?
是否创建了一个新线程?
-是的,谢谢。看来我需要摆脱以前的任务前思维模式。
Task.Run(…)
不会创建新线程,但队列可以为线程池工作,如果这项工作长期运行并多次调用,您可能会遇到线程不足。问题是
某些东西是否真的需要异步?您正在为工作创建专用线程,所以阻止它应该不是问题。