WaitAll 和 Wait 之间的区别
本文关键字:区别 之间 Wait WaitAll | 更新日期: 2023-09-27 18:34:40
我开发了一个从CRM 2011检索数据的 ASP.NET 页面。有多个调用,页面加载需要几秒钟。
我想我可能会使用一些并行性来加快速度。
这是代码:
Task[] tasks = new Task[4];
tasks[0] = Task.Run(() =>
{
RetrieveAttributeRequest retrieveFreightTerm = new RetrieveAttributeRequest { };
retrieveFreightTerm.EntityLogicalName = "account";
retrieveFreightTerm.LogicalName = "address1_freighttermscode";
retrieveFreightTerm.MetadataId = Guid.Empty;
retrieveFreightTerm.RetrieveAsIfPublished = true;
RetrieveAttributeResponse retrieveFrieghtTermResponse = (RetrieveAttributeResponse)Service.Execute(retrieveFreightTerm);
PicklistAttributeMetadata retrievedPicklistAttributeMetadata = (PicklistAttributeMetadata)retrieveFrieghtTermResponse.AttributeMetadata;
OptionMetadata[] optionlist = retrievedPicklistAttributeMetadata.OptionSet.Options.ToArray();
if (!IsPostBack)
foreach (OptionMetadata oMD in optionlist)
{
FreightTermDropDownList.Items.Add(new ListItem(oMD.Label.UserLocalizedLabel.Label, oMD.Value.ToString()));
}
});
在我使用的任务之后
Task.WaitAll();
我一直在调试代码并检索数据,但下拉列表无论如何都是空的。
更改
Task.WaitAll();
自
tasks[0].Wait(2000);
tasks[1].Wait(2000);
tasks[2].Wait(2000);
tasks[3].Wait(2000);
使代码工作(我有 4 个任务(。这两个选项有什么区别?
您需要
将tasks
数组传递给WaitAll()
方法:
Task.WaitAll(tasks);
WaitAll()
和 Wait()
之间的区别在于,Wait()
用于等待特定任务(调用 Wait()
的实例(的完成,WaitAll()
等待作为参数给出的所有任务的完成。
同样,为了使WaitAll()
正常工作,您需要传递您正在等待的实际任务。