首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TaskFactory.StartNew行为

TaskFactory.StartNew行为
EN

Stack Overflow用户
提问于 2015-01-28 11:24:22
回答 1查看 85关注 0票数 1

如果我要使用TaskFactory.StartNew(MyFunc(), new CancellationToken(), TaskCreationOptions.None, TaskScheduler.Current)会发生什么呢?

对于TaskScheduler.Current,它只是同步执行MyFunc(),还是使用一些随机线程,或者其他什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-28 11:34:11

对于TaskScheduler.Current,它只是同步执行MyFunc(),还是使用一些随机线程,或者其他什么?

这取决于执行的范围和Current的值。虽然这是非常不可能是同步执行。即使使用了UI同步上下文,它也将使用BeginInvoke异步发布,但它将被发布到UI线程。

关于Current医生说的价值

当不在任务中调用时,Current将返回默认调度程序。

如果您从另一个Task执行此代码,在其中您传递了另一个TaskScheduler,那么Current的值就是这个值,也就是您的委托的运行位置。例如,如果从UI线程捕获了TaskScheduler.FromCurrentSynchronizationContext,您将最终将此委托提交给UI消息循环。否则,它将使用Default,即ThreadPoolTaskScheduler,而不是在任意线程池线程上调用委托。

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

https://stackoverflow.com/questions/28191033

复制
相关文章

相似问题

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