是否有任何类型的内联构造可以用来使外部方法调用可等待?

我想让下面的用户查找和组查找可等待,以便我可以在 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 个方法。您知道我是否可以在方法中使用任何类型的内联构造/包装器来使这些方法调用成为可等待的,因此我可以以与上面的示例代码类似的方式调用这些方法吗?


慕慕森
浏览 139回答 2
2回答

MYYA

这就是答案,对吗?: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;
打开App,查看更多内容
随时随地看视频慕课网APP