【发布时间】:2019-08-13 18:35:56
【问题描述】:
试图将 foreach 语句更改为 parallel.foreach。使用 autofac。
我的解决方案是我尝试将 AutoFac 添加到的网络表单站点。我遇到问题的课程是使用 Autofac,使用标准 foreach。我想过渡到 Parrallel.foreach。所有示例都显示了一个 container.BeginLIfetimeScope(),但没有关于什么是容器或如何新建容器的信息。
Parallel.ForEach(items, item =>
{
// Note I'm calling container.BeginLifetimeScope() inside the ForEach
using (var parallelScope = container.BeginLifetimeScope())
{
var aDataService = parallelScope.Resolve<IaDataService>();
aDataService.SomeProcessing();
}
}
【问题讨论】:
-
附注,但在服务器应用程序中,您可能不应该使用 Parallel.* 方法。
-
不清楚 - 标题说问题是关于如何在 parallel.foreach 循环中使用它,但问题说它是关于容器是什么以及如何创建它。无论哪个是问题,都应该在问题的标题中。
-
容器是autofac。这就是为什么问题是如何在 parallel.foreach 中使用 autofac。
-
你能把问题编辑得更清楚吗?听起来要么 a) 你有 Autofac 的现有代码,但当你把它放在 Parallel 块中时它不起作用,或者 b) 你正在寻找关于如何使用 Autofac 容器的一般建议,或两者兼而有之。如果 (a) 您能否报告您看到的具体错误并包括容器的接线。如果(b),有很多文档值得一读,例如autofaccn.readthedocs.io/en/latest/getting-started/index.html
-
a) 是 b) 是如何在 Parallel 块中使用 Autofac 容器。 a)没有错误,因为我无法编译代码。容器从何而来。 b) 那是这个代码来自。但没有讨论如何在类中获取容器,在 webforms 应用程序中