任务并行库- WPF分派器和工作窃取



我有一个使用WPF作为其GUI的应用程序,但是,一个命令启动了非常沉重的处理负载。我注意到,当引擎(繁重的处理)运行时,我的GUI相当迟钝,当使用VS2015中的"应用程序时间轴"工具时,我注意到我的一些引擎代码正在UI线程上运行。

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

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

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

dispatcher线程是否有可能通过从TaskScheduler队列运行任务来"帮助"?如果是这样,是否有可能防止这种情况,以保持GUI响应(不惜损害后台任务)?

dispatcher线程是否有可能通过从TaskScheduler队列运行任务来"帮助"?

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

相关内容

  • 没有找到相关文章

最新更新