【问题标题】:How to make Parallel call to 2 different methods in c#如何在 C# 中对 2 个不同的方法进行并行调用
【发布时间】:2018-04-30 20:31:17
【问题描述】:

我有 2 个方法 getReponseFromDb() 和 getResponsefromthirdParty() 以数据表格式返回一些数据。我怎样才能使这个请求异步并等到它们都返回结果

public static datatable GetResult() {
      var task1 = getResponseFromDb();
      var task2 = getResponseFromThirdParty();
      ProcessResult(task1, task2);
}

public static datatable getResponseFromDB() {
    using(con SqlConnection = new SqlConnection()) {
       //get data from sql
    }
     returns datatable
}

public static datatable getResponseFromthirdParty() {
    //networkrequest
    //process to datatable
    //return datatable
}

【问题讨论】:

    标签: asp.net .net c#-4.0


    【解决方案1】:

    使用 System.Threading.Tasks;

    /保留所有任务的列表/

        List<Task<DataTable>> AllTasks = new List<Task<DataTable>>();
    

    /并行调用两个函数/

        Task<DataTable> t1 = new Task<DataTable>(() => getReponseFromDb());
    
        Task<DataTable> t2 = new Task<DataTable>(() => getResponseFromthirdParty());
        AllTasks.Add(t1);
        AllTasks.Add(t2);
        t1.Start();
        t2.Start();
    

    /等待所有任务完成/

        Task.WhenAll(AllTasks).ContinueWith(task => ProcessResult(AllTasks));
    

    注意:如果连接到同一个数据库,请为这两个任务使用不同的 SqlConnection 对象,否则您可能会收到错误!:)

    【讨论】:

      猜你喜欢
      • 2023-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多