首页 > 解决方案 > 哪种方式对异步更有效/更快

问题描述

最近,我一直在这两种方法之间来回走动。

你会在下面的代码中看到有一个DataTable[] data = await Task.WhenAll(datatables[])

当我使用该代码时,我只需将我的对象数据表属性分配给它们相应的数组编号。object.datatablePropX = data[x]

但是,目前我只是在等待每个单独的任务,并假设在一个等待开始后,它会立即进入下一个。我假设这个错了吗?

private static async Task<InitalizationModel> BuildInitalizationModelAsync(string comp, DataTable data, string[] allSizesWithDashes)
{
    string query = Regex.Replace(Resources.qryAllLocateOrderIDs, "@COMP", comp);
    string connection = "Server=REDACTED;Database=REDACTED;Trusted_Connection=True;";
    InitalizationModel result = new InitalizationModel();
    result.CompanyNumber = comp;
    result.AllSizesWithDashes = allSizesWithDashes;
    result.InitialData = data;
    result.LocateIdData = UtilitySqlAgent.SelectDataTable(query, connection);
    result.LocateOrderIdList = GeneralFunctions.GetAllLocateOrderIds(comp, result.LocateIdData);
    List<string> locateConstraint = GeneralFunctions.ConstraintMaker(result.LocateOrderIdList);
    Task<DataTable> LocateShipmentDataTask = LocateSqlAgent.GetAllShipmentDataAsync(locateConstraint);
    Task<DataTable> LocateOrderedItemsDataTask = LocateSqlAgent.GetAllOrderItemsAsync(locateConstraint);
    Task<DataTable> WmsShipmentDataTask = WmsSqlAgent.GetAllShipmentDataAsync(comp);
    Task<DataTable> WmsOrderedItemsDataTask = WmsSqlAgent.GetAllOrderItemsAsync(comp);
    Task<DataTable> CancellationDataTask = UtilitySqlAgent.GetAllCancellationDataAsync(comp);
    Task<DataTable> BackorderDataTask = UtilitySqlAgent.GetAllBackorderedDataAsync(comp);
    Task<DataTable> ShipMethodDataTask = UtilitySqlAgent.GetAllShipMethodDataAsync(comp);
    Task<DataTable> LocateOrderedItemsDataWithIdTask = GeneralFunctions.AddAllLocateSkuItemIDsAsync(await LocateOrderedItemsDataTask, allSizesWithDashes);
    //await Task.WhenAll(LocateShipmentDataTask, LocateOrderedItemsDataTask, WmsShipmentDataTask, WmsOrderedItemsDataTask, CancellationDataTask, BackorderDataTask, ShipMethodDataTask);
    result.LocateShipmentData = await LocateShipmentDataTask;
    result.LocateOrderedItemsData = await LocateOrderedItemsDataTask;
    result.WmsShipmentData = await WmsShipmentDataTask;
    result.WmsOrderedItemsData = await WmsOrderedItemsDataTask;
    result.CancellationData = await CancellationDataTask;
    result.BackorderData = await BackorderDataTask;
    result.ShipMethodData = await ShipMethodDataTask;
    result.LocateOrderedItemsData = await LocateOrderedItemsDataWithIdTask;
    return result;
}

标签: c#asynchronous

解决方案


推荐阅读