我有一个ASP.NET应用程序,其中一个请求调用6个非常慢的方法。这些方法不是异步的,我没有时间重写和测试它们。如何在6个线程上运行这6个方法,然后对结果进行聚合?我在.NET 4.5上。
答案 0 :(得分:2)
您可以简单地使用Task.Run
创建一个运行另一个线程中每个方法的任务,然后等待它们全部完成,以便您可以使用结果。
var tasks = new Task<YourResultType>[]
{
Task.Run(() => Method1()),
Task.Run(() => Method2()),
Task.Run(() => Method3()),
Task.Run(() => Method4()),
Task.Run(() => Method5()),
Task.Run(() => Method6()),
};
var results = Task.WhenAll(tasks).Result;
如果这些方法都不具有相同类型的结果,允许您将所有任务放入数组中,那么您需要为每个任务分别使用局部变量并使用{{在启动它们之后每一个上都有1}}。