当前位置: 首页 > 知识库问答 >
问题:

等待vs等待任务。运行[重复]

胡安怡
2023-03-14

使用asyn/wait vs wait有什么区别task.run()

等待任务。运行示例-

 public static void Main()
{

   await Task.Run(() =>
    {
        return "Good Job";
    });
    method1();
    method2();
}

异步等待示例-

 public static async void Launch()
    {

        await GetMessage();
        Method1();
        Method2();
    }

    public static async Task<string> GetMessage()
    {
        //Do some stuff
    }

共有1个答案

单于煌
2023-03-14

区别在于运行代码的上下文<代码>返回“干得好” 将在单独的任务中立即执行(可能在单独的线程上执行-这由默认的任务调度程序决定,如ThreadPool)。在第二种情况下,第一次等待之前GetMessage中的所有代码都将在与调用方相同的上下文中同步执行。wait之后的其余代码将被委托给单独的任务。

 类似资料:
  • 我在网上搜索了很多关于vs await async,但是在这个特定的使用场景中,我并不真正理解其中的区别。我相信情况很简单。 vs. 其中,是一个异步方法,其中包含一些异步调用,例如使用wait调用db。 问题: 在这种情况下,两者之间有什么区别吗?任何帮助或意见,谢谢!

  • 在C#中,我有以下两个简单的例子: 第一个示例创建一个打印“开始”的任务,等待5秒钟打印“完成”,然后结束任务。我等待任务完成,然后打印“全部完成”。当我运行测试时,它会按预期运行。 第二个测试应该具有相同的行为,只是由于使用了async和Wait,任务内部的等待应该是非阻塞的。但是这个测试只打印“开始”,然后立即打印“全部完成”和“完成”,永远不会打印。 我不知道我为什么会有这样的行为:S非常感

  • 问题内容: 之间有什么区别: 还有这个 ? 我知道在第一个摘要中,所有的诺言都同时被兑现了,但是我不确定第二个。for循环是否等待第一次迭代完成以调用下一个promise?还是所有的诺言都在同一时间触发,循环的内部就像它们的回调一样? 问题答案: 是的,它们绝对不同。应该与异步迭代器一起使用,而不是与预先存在的promise数组一起使用。 为了清楚起见, 与…相同 要么 在等待任何事情之前,这些呼

  • 我只想确保我很好地理解异步await和task.run或task.whenall之间的区别 所以异步等待就是处理异步方法。它意味着隐含着一个处理顺序。 我在不阻塞主线程的情况下运行了一个很长的处理,并等待结果继续。 对于task.run和task.when,这里有一个多线程的新概念。这意味着我可以在一个新线程上启动一个长进程,它不会等待完成来继续代码。代码在新线程上。在这个线程上,我可以等待方法。

  • 问题内容: 我在项目中将Django与PostgreSQL一起使用。我把它们放在不同的容器中,问题是我需要在运行django之前等待postgres。这时我正在用django容器的command.sh文件执行此操作。我还发现netcat可以解决问题,但是我更喜欢没有附加软件包的方法。curl和wget无法执行此操作,因为它们不支持postgres协议。有办法吗? 问题答案: 您的解决方案tizia

  • 问题内容: 如何让我的代码等待,直到DispatchQueue中的任务完成?是否需要任何CompletionHandler或其他东西? 我正在使用Xcode 8.2并在Swift 3中编写。 问题答案: 使用s可以实现这一点。您可以在群组和通话达到平衡时得到通知: 或者您可以等待: 注意 :阻止当前队列(在您的情况下可能是主队列),因此您必须在另一个队列上(如上面的示例代码中)以避免 死锁 。