相关疑难解决方法(0)

如何使用await在自定义TaskScheduler上运行任务?

我有一些方法Task<T>可以随意返回await.我想让这些任务在自定义TaskScheduler而不是默认的上执行.

var task = GetTaskAsync ();
await task;
Run Code Online (Sandbox Code Playgroud)

我知道我可以创建一个新的TaskFactory (new CustomScheduler ())StartNew ()从中做一个,但是StartNew ()需要一个动作并创建它Task,我已经拥有了Task(在幕后由a返回TaskCompletionSource)

我怎样才能指定我自己TaskSchedulerawait

.net c# async-await

38
推荐指数
4
解决办法
3万
查看次数

如何获取使用SynchronizationContext的任务?那么SynchronizationContext是如何使用的呢?

我还在学习整个任务概念和TPL.根据我目前的理解,SynchronizationContext函数(如果存在)用于await在某处调度任务.另一方面,Task类中的函数不使用上下文,对吧?

因此,例如,Task.Run(...)总是在线程池的工作线程上调度操作并SynchronizationContext.Current完全忽略.await Foobar()将使用上下文执行生成的任务后await

如果这是真的,我的问题是:我怎样才能获得a Task,实际运行一个动作但是被派遣使用SynchronizationContext.Current.Send/Post

任何人都可以推荐一个很好的介绍SynchronizationContext,特别是在框架的其余部分使用它们的时间和方式?在MSDN似乎很沉默的类.顶级Google点击(此处此处)似乎仅适用于Windows Forms调度.Stephen Cleary撰写了一篇文章,很好地了解了已经存在的背景以及它们是如何工作的,但我不了解实际使用的地点和时间.

c# synchronizationcontext async-await

25
推荐指数
2
解决办法
2万
查看次数

标签 统计

async-await ×2

c# ×2

.net ×1

synchronizationcontext ×1