我在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的建议。你能帮我吗?
发布于 2014-12-22 10:49:22
很简单。您需要在方法中使用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;
}https://stackoverflow.com/questions/27601135
复制相似问题