首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Task.Run vs Task.Start

Task.Run vs Task.Start
EN

Stack Overflow用户
提问于 2017-07-18 13:07:28
回答 1查看 2.6K关注 0票数 0

为什么我在使用Task.Run和使用Task.Start时看到了行为上的差异

代码片段:

代码语言:javascript
复制
async Task<string> RunAsync()
{
    await Task.Delay(2);
    Console.WriteLine("In RunAsync");
    return "{}";
}

void Approach1()
{
    var task = new Task(async () => await RunAsync());

    task.Start();
    task.Wait();

    Console.WriteLine("In Approach1");
}

void Approach2()
{
     var task = Task.Run(() => RunAsync());

     task.Wait();

     Console.WriteLine("In Approach2");
}


void Main()
{
    Approach1();
    Approach2();
}

实际输出:

代码语言:javascript
复制
In Approach1
In RunAsync
In RunAsync
In Approach2

我期望得到以下输出:

代码语言:javascript
复制
In RunAsync
In Approach1
In RunAsync
In Approach2

请注意,我看到的博客建议不要使用Task.Start:https://blogs.msdn.microsoft.com/pfxteam/2010/06/13/task-factory-startnew-vs-new-task-start/

EN

回答 1

Stack Overflow用户

发布于 2017-07-18 13:11:56

在approach1中,您可以使用await。await实际上并不等待任何东西。所以你在你的任务中有一个异步运行的aysynchonous任务。然后,它触发并忘记RunAsync方法,在async方法仍在运行时结束任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45157946

复制
相关文章

相似问题

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