Task.ContinueWith的替代品
本文关键字:替代品 ContinueWith Task | 更新日期: 2023-09-27 18:35:07
我使用以下包装器Task.Run
来运行任务并测量它花费了多长时间:
private static Task<MyObject> RunTask(Func<MyObject> task)
{
var watch = Stopwatch.StartNew();
var result = Task.Run(task);
result.ContinueWith(t =>
{
watch.Stop();
t.Result.ExecutionTimeInMs = watch.ElapsedMilliseconds;
});
return result;
}
我已经多次看到避免ContinueWith
而是使用await
的建议。你能帮我做到吗?
这很简单。您需要在方法中使用 async
修饰符,并在Task.Run
上await
:
private static async Task<MyObject> RunTask(Func<MyObject> task)
{
var watch = Stopwatch.StartNew();
var result = await Task.Run(task);
watch.Stop();
result.ExecutionTimeInMs = watch.ElapsedMilliseconds;
return result;
}