gpt4 book ai didi

c# - 如何获取使用 SynchronizationContext 的任务?以及如何使用 SynchronizationContext?

转载 作者:IT王子 更新时间:2023-10-29 04:25:41 28 4
gpt4 key购买 nike

我仍在学习整个任务概念和 TPL。根据我目前的理解,await 使用 SynchronizationContext 函数(如果存在)将任务分派(dispatch)到“某处”。另一方面,Task 类中的函数不使用上下文,对吗?

因此,例如 Task.Run(...) 将始终在线程池的工作线程上分派(dispatch)操作并完全忽略 SynchronizationContext.Currentawait Foobar() 会在 await?

之后使用上下文来执行生成的任务

如果那是真的,我的问题是:我怎样才能获得一个 Task,它实际上运行一个 Action 但使用 SynchronizationContext.Current.Send/Post 调度?

谁能推荐对 SynchronizationContext 的一个很好的介绍,特别是框架的其余部分何时以及如何使用它们? MSDN上课似乎很安静。 Google 的热门点击(herehere)似乎只针对 Windows 窗体调度。 Stephen Cleary 写道 an article了解已经存在的上下文以及它们如何工作是件好事,但我不了解它们的实际使用地点和时间。

最佳答案

How can I obtain a Task, that actually runs an action but is dispatched using SynchronizationContext.Current.Send/Post?

使用特殊的任务调度器:

Task.Factory.StartNew(
() => {}, // this will use current synchronization context
CancellationToken.None,
TaskCreationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext());

And can anyone recommend a good introduction into SynchronizationContext

看文章It's All About the SynchronizationContext斯蒂芬·克利里 (Stephen Cleary) 着。

关于c# - 如何获取使用 SynchronizationContext 的任务?以及如何使用 SynchronizationContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916253/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com