【发布时间】:2021-09-19 07:51:30
【问题描述】:
我正在调用存储在字典中的异步 lambda。此异步 lambda 指向使用 Azure 订阅的可等待方法。
public async Task<IEnumerable<ISubscription>> GetAllSubscriptions()
{
List<ISubscription> subscriptions = new List<ISubscription>();
//return await azureAuthenticated.Subscriptions.ListAsync();
foreach (var subscription in await azureAuthenticated.Subscriptions.ListAsync())
{
subscriptions.Add(subscription);
}
return subscriptions;
}
public async Task<IEnumerable<AzureSubscription>> GetAllSubscriptions()
{
return (await connectionProvider.GetAllSubscriptions()).ToList()
.Select(s => new AzureSubscription { SubscriptionId = s.SubscriptionId,
DisplayName = s.DisplayName, State = s.State });
}
字典是:
private IDictionary<string, Func<Task<List<string>>>> _GetDropDownControlDynamicData;
而字典初始化是:
_GetDropDownControlDynamicData = new Dictionary<string, Func<Task<List<string>>>>()
{
["Subscription"] = async () => (await _azureService.GetAllSubscriptions()).Select(pr => pr.DisplayName).ToList(),
["OsDiskTypes"] = async () => (await _azureService.GetOsDiskTypes()).Select(pr => pr.DisplayName).ToList()
}
在这里,当调用者使用以下行调用 lambda 时。
var subscriptions = _GetDropDownControlDynamicData[parameter.Name]().Result.ToList()此调用永远不会返回。我不知道为什么..?
我没有正确使用 lambda 吗?或者我根本不应该编写委托字典模式来发出这些类型的调用。
这里有没有人可以帮忙?提前致谢。
【问题讨论】:
标签: .net azure async-await delegates