我有一个使用 WPF 作为其 GUI 的应用程序,但是,在命令启动时,处理负载非常重。我注意到当引擎(繁重的处理)运行时我的 GUI 相当缓慢,并且在 VS2015 中使用“应用程序时间线”工具时,我注意到我的一些引擎代码正在 UI 线程上运行。
引擎从以下行开始,如果我理解该LongRunning
标志,则创建一个新线程并在该线程上运行给定的函数。
rootTask = Task.Factory.StartNew(DoWork, TaskCreationOptions.LongRunning);
上面引用的DoWork
方法重复用于Parallel.For
排队数百个任务。
调度程序线程是否有可能通过运行 TaskScheduler 队列中的任务来“提供帮助”?如果是这样,是否有可能阻止这种情况以保持 GUI 响应(尽管会损害后台任务)?