C# 显式指定隐式调度方法的TaskScheduler

C# 显式指定隐式调度方法的TaskScheduler,c#,.net,task-parallel-library,async-ctp,C#,.net,Task Parallel Library,Async Ctp,我有以下使用隐式调度的方法: private async Task FooAsync() { await Something(); DoAnotherThing(); await SomethingElse(); DoOneLastThing(); } 但是,从一个特定的呼叫站点,我希望它在低优先级调度程序上运行,而不是在默认的调度程序上运行: private async Task BarAsync() { await Task.Factory.StartNew(

我有以下使用隐式调度的方法:

private async Task FooAsync()
{
   await Something();
   DoAnotherThing();
   await SomethingElse();
   DoOneLastThing();
}
但是,从一个特定的呼叫站点,我希望它在低优先级调度程序上运行,而不是在默认的调度程序上运行:

private async Task BarAsync()
{
   await Task.Factory.StartNew(() => await FooAsync(), 
      ...,
      ...,
      LowPriorityTaskScheduler);
}
我如何做到这一点?这似乎是一个非常简单的问题,但我的思维完全受阻了


注意:我知道这个示例实际上不会编译:)

您可以设置线程优先级,但在线程的方法中:

System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.BelowNormal;

检查
ThreadPriority
enum的其他值。

创建自己的
TaskFactory
实例,并用所需的调度程序初始化。然后对该实例调用
StartNew

TaskScheduler taskScheduler = new LowPriorityTaskScheduler();
TaskFactory taskFactory = new TaskFactory(taskScheduler);
...
await taskFactory.StartNew(FooAsync);

如果您需要从wait获取返回,还应该将其展开,即wait taskFactory.StartNew(fooancy).unwrap;可以为
LowPriorityTaskScheduler
添加代码或引用吗?@xmedeko:
LowPriorityTaskScheduler
是op的类型,而不是我的类型。