草庐IT

synchronizationcontext

全部标签

c# - SynchronizationContext.Current 在主 UI 线程的 Continuation 中为 null

我一直在尝试追踪Winforms应用程序中的以下问题:SynchronizationContext.Current在主线程上运行的任务延续(即.ContinueWith)中为null(我希望当前同步上下文为System.Windows.Forms.WindowsFormsSynchronizationContext)。这是演示该问题的Winforms代码:usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWindowsFormsApplicat

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

我仍在学习整个任务概念和TPL。根据我目前的理解,await使用SynchronizationContext函数(如果存在)将任务分派(dispatch)到“某处”。另一方面,Task类中的函数不使用上下文,对吗?因此,例如Task.Run(...)将始终在线程池的工作线程上分派(dispatch)操作并完全忽略SynchronizationContext.Current。awaitFoobar()会在await?之后使用上下文来执行生成的任务如果那是真的,我的问题是:我怎样才能获得一个Task,它实际上运行一个Action但使用SynchronizationContext.Curre

c# - SynchronizationContext 和 TaskScheduler 之间的概念区别是什么

StephenToubblogged那BothSynchronizationContextandTaskSchedulerareabstractionsthatrepresenta“scheduler”,somethingthatyougivesomeworkto,anditdetermineswhenandwheretorunthatwork.Therearemanydifferentformsofschedulers.Forexample,theThreadPoolisascheduler:youcallThreadPool.QueueUserWorkItemtosupplyade

c# - SynchronizationContext.Send 和 SynchronizationContext.Post 有什么区别?

感谢JeremyMiller在FunctionalProgrammingForEveryday.NETDevelopment中的出色工作,我有一个工作命令执行器,它可以做我想做的一切(在线程池上做繁重的工作,将结果或错误发送回同步上下文,甚至将进度发送回同步上下文),但我无法解释为什么使用SynchronizationContext.Send来自线程池和Synchronization.Post从Func传递到执行繁重工作的方法。我已经多次阅读文档,但我无法直觉了解其中的区别。我应该从一个名为Send和一个名为Post的事实中得到什么?我感觉到神奇之处在于Send“启动一个同步请求”和P