WPF调度员和工作窃取?

时间:2016-06-29 21:46:02

标签: wpf task-parallel-library threadpool work-stealing

我有一个应用程序,它使用WPF作为其GUI,但是,在命令启动非常繁重的处理负载。 我注意到当引擎(繁重处理)运行时以及使用“应用程序时间线”时,我的GUI非常缓慢。在VS2015中的工具,我注意到我的一些引擎代码正在UI线程上运行。

使用以下行启动引擎,如果我理解LongRunning标志,则创建一个新线程并在该线程上运行给定的函数。

        rootTask = Task.Factory.StartNew(DoWork, TaskCreationOptions.LongRunning);

上面引用的DoWork方法重复使用Parallel.For排队数百个任务。

调度员线程是否有可能帮助解决问题?通过从TaskScheduler队列运行任务?如果是这样,是否可以防止这种情况使GUI保持响应(尽管不利于后台任务)?

1 个答案:

答案 0 :(得分:0)

  

调度员线程是否有可能帮助解决问题?通过从TaskScheduler队列运行任务?

不,据我所知,这是不可能的。如果来自Task的某些代码确实在调度程序线程上执行,那么这意味着任务必须明确地在那里安排它。