gpt4 book ai didi

c# - 具有多个参数的 Task.Factory.StartNew

转载 作者:行者123 更新时间:2023-11-30 20:10:22 24 4
gpt4 key购买 nike

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

private Domain ImportDomain(ConstructorInfo domainConstructor,
string[] domainAttributes, DateTime importDate)
{
...
}

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

ImportDomain(myConstructor, myAttributes, myDate);

在我尝试添加并行度之前,一切都很好。

我以为我可以做到这一点:

Task<Domain>.Factory.StartNew(() =>
ImportDomain(myConstructor, myAttributes, myDate)
);

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

但是,我发现虽然 StartNew() 行正在执行,但从未使用此代码调用 ImportDomain()。我感觉这可能是由于我对 lambda 表达式相对缺乏经验,但我也看到所有使用 StartNew() 的示例要么使用委托(delegate),要么传递单个参数。

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

最佳答案

我认为你需要的是命名任务,并获得完成导入的结果。

Task<Domain> someDomainTask = Task<Domain>.Factory.StartNew(() => 
{
return ImportDomain(myConstructor, myAttributes, myDate);
}
);
Domain someDomain = someDomainTask.Result;

关于c# - 具有多个参数的 Task.Factory.StartNew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com