簡體   English   中英

我可以使用任何類型的內聯構造來使外部方法調用等待嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM