我在这里遇到了一个问题,你可能知道答案:我只是仍然无法弄清楚。
我在这里为一个简单的场景创建一个种子:向给定的帖子添加喜欢。方法签名是:
async Task GeneratePostLike(string postId, string userId, CancellationToken cancellationToken = default) {
return await postLikeService.AddUserLikeToPost(
new PostLikeInput { PostId = postId, UserId = userId },
cancellationToken
);
}
字符串
我想随机生成喜欢的职位。我使用随机和其他机制,以获得这样做的随机数。
当我使用一个旧的for循环块时,它会按照我想要的方式执行。这是我使用的指令:
var numberOfLikesForPost = random.Next(1, 100);
var randomUsersForLikes = await userService.GetRandomUsers(numberOfLikesForPost);
for (var likeIndex = 0; likeIndex < numberOfLikesForPost; likeIndex++)
{
var randomUserId = randomUsersForLikes.PickRandom().Id;
await GeneratePostLike(post.Id!, randomUserId, cancellationToken);
}
型
x1c 0d1x的数据
然而,当我尝试使用Task.WhenAll
时,它只是执行一两次迭代并继续执行。看起来它的行为就像是某种类型的fire-and-forget。下面的代码代表了我对Task.WhenAll
块的操作:
var numberOfLikesForPost = random.Next(1, 100);
var randomUsersForLikes = await userService.GetRandomUsers(numberOfLikesForPost);
var generatePostLikeTasks = Enumerable.Repeat(
GeneratePostLike(
post.Id!,
randomUsersForLikes.PickRandom().Id,
cancellationToken
),
numberOfLikesForPost
);
await Task.WhenAll(generatePostLikeTasks);
型
的
你有什么建议,我可以添加什么,以使我的Task.WhenAll
块正确地等待所有任务的执行,然后再继续?
1条答案
按热度按时间lymnna711#
字符串
这不会创建
numberOfLikesForPost
数量的任务,但会重复相同的任务示例numberOfLikesForPost
次。你应该可以将其更改为如下所示。还没有测试它,因为我目前没有访问IDE的权限。
型