首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重构ParameterizedThreadStart以进行异步等待

重构ParameterizedThreadStart以进行异步等待
EN

Stack Overflow用户
提问于 2018-06-02 08:11:11
回答 1查看 483关注 0票数 1

我想重构一些启动新线程的代码,以便异步等待这些代码在队列中执行长时间运行的任务。它在Framework4中,我正在升级到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()

然后,intellisense想让我让Spawn()异步,所以这看起来像是一次大的重构。我走的路对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 08:22:06

对于你来说,最简单的事情就是,如果你只是想让一些事情在后台线程上发生,那就是做下面的事情:

Task.Run( () => DoWork() );

然后,您不需要将DoWork函数设置为任务或异步。如果您仍然希望能够等待它,那么您可以等待Task.Run返回的任务,或者对它调用Wait()函数(如果这样做,请注意死锁的可能性)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50652361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档