gpt4 book ai didi

c# - C#中如何计算异步方法的执行时间

转载 作者:太空狗 更新时间:2023-10-29 20:58:10 24 4
gpt4 key购买 nike

所以我有一个异步执行某些操作的 Async 方法。

private async static void DoSomethingAsync (int i){}

我在一个循环中调用它,比如说 50 次。

for (int i = 0; i < 50; i++)
{
DoSomethingAsync (i);
}

在循环结束时,我想计算总处理时间,我使用了 Stopwatch,但你可以想象它给了我错误的时间,因为它在循环后立即被调用,它不会等待 DoSomethingAsync 完成处理.

如何告诉 Stopwatch 等待 DoSomethingAsync() 的所有 50 个实例完成。我看过this问题,但我不能在这里使用任务。

最佳答案

我不知道您为什么不能使用 Task,我猜您是在 Main 方法或其他方法中调用它。所以我会从那里出去。

正如 Martin Ullrich 所说,我会改变 DoSomethingAsync返回任务的方法:

private async static Task DoSomethingAsync(int i)
{
...
}

然后通过将方法添加到 List<Task> 来创建一个执行循环的新方法:

private static async void PerformLoop()
{
Stopwatch timer = new Stopwatch();
timer.Start();
List<Task> l = new List<Task>();
for (int i = 0; i < 50; i++)
{
l.Add(DoSomethingAsync(i));
}
await Task.WhenAll(l);
timer.Stop();

Console.WriteLine(timer.Elapsed.TotalSeconds);
}

现在从之前执行循环的位置开始,在本例中为 Main方法只需在其中添加新的方法调用:

static void Main(string[] args)
{
PerformLoop();

Console.ReadLine();
}

关于c# - C#中如何计算异步方法的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50501827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com