Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否更改默认的TaskFactory?_C#_Multithreading_Task Parallel Library_Async Await - Fatal编程技术网

C# 是否更改默认的TaskFactory?

C# 是否更改默认的TaskFactory?,c#,multithreading,task-parallel-library,async-await,C#,Multithreading,Task Parallel Library,Async Await,是否有可能以某种方式连接到TPL中任务的创建过程中? 如果我自己制作了TaskScheduler,我就可以在任务即将计划执行时获得任务。 如果我创建自己的SynchronizationContext,我可以在任务完成后将要执行的继续时获得它 但是有没有办法设置默认任务工厂来使用我的特殊任务调度器? 或者我可以将我的任务调度程序应用于在当前线程中创建的任何任务吗 我想做的是: SetTaskSchedulerForCurrentThread(taskScheduler); // call cod

是否有可能以某种方式连接到TPL中
任务的创建过程中?
如果我自己制作了
TaskScheduler
,我就可以在任务即将计划执行时获得任务。 如果我创建自己的
SynchronizationContext
,我可以在
任务完成后将要执行的继续时获得它

但是有没有办法设置默认任务工厂来使用我的特殊任务调度器? 或者我可以将我的任务调度程序应用于在当前线程中创建的任何任务吗

我想做的是:

SetTaskSchedulerForCurrentThread(taskScheduler);

// call code that may or may not use async await or normal tasks...
RunStuff();

UnSetTaskSchedulerForCurrentThread();
我已经让一切正常工作,我使用Task.Factory.StartNew并传入我的自定义TaskScheduler。 但是,我不希望我启动的任务使用该调度器,只希望使用任何潜在的子任务


我是运气不好还是有可能解决问题?

所有这些都表明了问题的严重性。如果你能解释你试图解决的核心问题是什么,而不是问你认为解决方案是什么,那么你可能会得到更好的答案。为不相关的代码更改调度程序不是一个好的做法,因为这些代码都不可疑。只有调度任务的代码才知道它应该运行在哪里。为什么不能显式地控制调度程序?为什么这个标记为wait?我想更改默认的Task.Factory.Scheduler,因为它很糟糕。