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的类型,而不是我的类型。