小编iis*_*ems的帖子

具有多个参数的Task.Factory.StartNew

我正在尝试重构一些代码,以通过并行性实现更高的吞吐量.我做了所有的基础重构,我在那里进行了极简主义的单一调用,它是线程安全的.我的方法有多个参数:

private Domain ImportDomain(ConstructorInfo domainConstructor,
                            string[] domainAttributes, DateTime importDate)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我有工作代码,它迭代调用此方法,就像这样:

ImportDomain(myConstructor, myAttributes, myDate);
Run Code Online (Sandbox Code Playgroud)

在我尝试添加并行性之前,所有工作都完全正常.

我以为我只能做到这一点:

Task<Domain>.Factory.StartNew(() =>
    ImportDomain(myConstructor, myAttributes, myDate)
);
Run Code Online (Sandbox Code Playgroud)

并添加一个catch块来处理可能抛出的任何AggregateException.

但是,我发现ImportDomain()虽然该StartNew()行正在执行,但从未使用此代码调用过.我有一种感觉这可能是由于我对lambda表达式的相对缺乏经验,但我也看到所有使用的例子StartNew()都使用委托,或传递一个参数.

使我的多参数调用兼容的最简单的解决方案是什么Task.Factory.StartNew()

c# parallel-processing .net-4.0

2
推荐指数
1
解决办法
8280
查看次数

标签 统计

.net-4.0 ×1

c# ×1

parallel-processing ×1