并行/异步(同时)

时间:2018-01-27 14:22:10

标签: c# asp.net sql-server stored-procedures parallel-processing

我有一段基本上看起来像这样的代码:

using(var ctx = new myDbContext())
{
    var task1 = Task.Factory.StartNew(() => items = ctx.zsp_select_UserItems(UserId).ToList());
    var task2 = Task.Factory.StartNew(() => result = ctx.zsp_select_Transactions(UserId, intoPast, LastUpdatedAt).ToList());
    var taskList = new List<Task> { task1, task2 };
    Task.WaitAll(taskList.ToArray());
}

基本上zsp_select_Transactions和zsp_select_UserItems是由我的项目中的ADO.NET Entity框架映射的存储过程。由于其中两个需要花费更长的时间来取回结果(由于抽出大量数据),我想知道同时触发这些,而不是等待第一个程序完成它&#39;执行然后触发第二个......

我对这段代码的问题在于它只能运行一次?第二次执行代码时出现以下错误:

The underlying provider failed to open

可能导致此问题的原因是什么?触发这两个程序并同时执行它们的最有效方法是什么,而不是等待第一个程序完成?

有人可以帮我解决这个问题吗?

0 个答案:

没有答案