[英]is there any type of inline construct I can use to make an external method call awaitable?
我想在下面等待用戶查找和組查找,以便可以在Task.WhenAll()中調用它們:
var userTask = UserPrincipal.FindByIdentity(context, inputParameters.Item2);
var groupTask = GroupPrincipal.FindByIdentity(context, inputParameters.Item3);
await Task.WhenAll(userTask, groupTask);
var user = await userTask;
var group = await groupTask;
我可以創建2個1行方法,每個這些查找1個方法。 您是否知道我可以在方法中使用任何類型的內聯構造/包裝器來使這些方法調用等待,所以我可以采用與上述示例代碼類似的方式來調用方法?
這是答案,對嗎?
var userTask = new Task<UserPrincipal>(() => { return UserPrincipal.FindByIdentity(context, inputParameters.Item2); });
var groupTask = new Task<GroupPrincipal>(() => { return GroupPrincipal.FindByIdentity(context, inputParameters.Item3); });
await Task.WhenAll(userTask, groupTask);
var user = await userTask;
var group = await groupTask;
使用Task.Run<TResult> Method (Func<TResult>)
。 它是TaskFactory.StartNew(Action)
方法或手動初始化new Task(Action)
的更簡單替代方法
將指定的工作排隊以在線程池上運行,並返回代表該工作的Task對象。
var userTask = Task.Run(() => UserPrincipal.FindByIdentity(context, inputParameters.Item2));
var groupTask = Task.Run(() => GroupPrincipal.FindByIdentity(context, inputParameters.Item3));
await Task.WhenAll(userTask, groupTask);
var user = await userTask;
var group = await groupTask;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.