首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替代Task.ContinueWith

替代Task.ContinueWith
EN

Stack Overflow用户
提问于 2014-12-22 10:46:33
回答 1查看 973关注 0票数 0

我在Task.Run周围使用了以下包装器来运行一个任务,并测量它花了多长时间:

代码语言:javascript
复制
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的建议。你能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-22 10:49:22

很简单。您需要在方法中使用async修饰符,在Task.Run上使用await

代码语言:javascript
复制
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;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27601135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档