c# - 哪种方式对异步更有效/更快
问题描述
最近,我一直在这两种方法之间来回走动。
你会在下面的代码中看到有一个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;
}
解决方案
推荐阅读
- python - 当多个实例存在前缀时,是否有处理正则表达式的标准方法?
- python - 使用 Python 绘制分数汉明距离的概率质量函数
- java - 在哪里可以找到 HERE API 的访问密钥?
- android - kotlin 注释可以将代码注入方法吗?
- r - 作为观察者动态调整闪亮仪表板中ggplot的高度
- java - 从文件末尾向后读取字节,直到达到条件
- npm - 将 Sencha Cmd 创建的包迁移到 npm
- scala - 无法弄清楚为什么模拟方法不起作用
- java - 使用 for 循环遍历 HashSet
- docker - Apache2 - 使用 docker 服务名称访问但使用 IP 地址时出现 400 错误请求