2016-02-04 32 views
3

这是一个围绕Orchard多线程的常见问题。如何在Orchard模块中实现多线程?

我有一个控制器模块提供一个动作来执行一个需要很长时间的数据库同步。该动作基本上执行for循环几百个项目,而每个项目可以独立处理/同步。

虽然研究如何提高性能我碰到几个可能的解决方案

  • async/await关键字
  • 平行于环路
  • Orchard.Environment.Work<>
  • Orchard.Caching.IParallelCacheContext
  • Orchard.Caching.ITask
  • async控制器动作(还与返回值Task<>结合)

等等。

什么是提高for循环的性能而不绕过已在Orchard中实现/提供的可能优化的最佳方式?

+1

你的瓶颈是什么? –

+0

@Szymonides当我发布此问题时,我不得不优化在模块的控制器操作中执行的同步任务,请参阅http://stackoverflow.com/a/35230193/3936440。但后来我认为提出一个常见问题是个好主意,因为我没有在网络上发现关于与Orchard有关的线程的任何内容。 – ViRuSTriNiTy

+0

从ASP.NET应用程序中旋转新线程几乎不是一个好主意。 –

回答