如何使我的自定义TaskScheduler成为默认值

Had*_*man 5 .net c# multithreading asynchronous async-await

我有自己的实现TaskScheduler.它存在的主要原因是它将处理器核心亲和力设置为运行我的任务的线程.

当我以下列方式使用它时:

var myTaskSceduler = new MyTaskScheduler(4);
var taskFactory = new TaskFactory(myTaskSceduler);
taskFactory.StartNew(DoSomething);
Run Code Online (Sandbox Code Playgroud)

亲和力工作正常,任务将只在指定的核心上运行.

我怎样才能改变Task.Factory,Task.Factory.Scheduler因此我的调度程序将成为默认调度程序

 Task.Factory.StartNew()
Run Code Online (Sandbox Code Playgroud)

被叫?

Lua*_*aan 0

为什么不创建自己的静态方法呢MyTask.StartNew()?无论如何,您不必指定亲和力作为参数吗?

无论如何,任务工厂应该使用与您调用 时所在的相同调度程序StartNew。因此,如果您在正确的调度程序上对任务执行此操作,它应该可以正常工作。这实际上取决于您如何处理处理调度等,但我认为如果您不打算在任何地方传递亲和力,那么无论如何您都会依赖于上下文。