猿问

将 ParameterizedThreadStart 重构为 Async Await

我想重构一些启动新线程的代码以使用 async await 代码在队列中执行长时间运行的任务。它在框架 4 中,我正在升级到 4.5.2


这是旧代码


public void Spawn(object data)

{

   var pts = new ParameterizedThreadStart(DoWork);

   new Thread(pts).Start(data);

}

public void DoWork()

{

   // things to run in new thread

}

如何让 DoWork 在新线程中运行?


我已经尝试了以下


public async Task DoWork()

{

   // things to run in new thread

}

但是我不知道如何在 Spawn 中调用它。如果我尝试


await DoWork()

然后智能感知要我使 Spawn() 异步,所以这开始看起来像一个大的重构。我在正确的道路上吗?


牛魔王的故事
浏览 228回答 1
1回答
随时随地看视频慕课网APP
我要回答