在ASP.NET应用程序中,在多个线程上执行方法

时间:2014-12-16 17:42:46

标签: c# multithreading async-await

我有一个ASP.NET应用程序,其中一个请求调用6个非常慢的方法。这些方法不是异步的,我没有时间重写和测试它们。如何在6个线程上运行这6个方法,然后对结果进行聚合?我在.NET 4.5上。

1 个答案:

答案 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}}。