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

异步等待任务。运行xamarin窗体

戚俊健
2023-03-14

我只想确保我很好地理解异步await和task.run或task.whenall之间的区别

所以异步等待就是处理异步方法。它意味着隐含着一个处理顺序。

我在不阻塞主线程的情况下运行了一个很长的处理,并等待结果继续。

对于task.run和task.when,这里有一个多线程的新概念。这意味着我可以在一个新线程上启动一个长进程,它不会等待完成来继续代码。代码在新线程上。在这个线程上,我可以等待方法。

因此,如果我清楚地理解,我决定使用异步等待长进程,这意味着主线程的执行顺序。

共有1个答案

白赞
2023-03-14

您对异步/awaittask.run的理解基本上是正确的。

task.run允许您轻松地在ThreadPool线程上运行一些代码,并避免阻塞当前线程。创建多个任务或使用paralle类允许您尝试使用多个CPU内核以更快地完成某些工作。

当使用异步/Await时,可以在任务完成后执行一些工作。由于synchronizationcontextawait之后的代码可以在原来的线程上执行,尽管并不总是这样。对于exaple控制台,应用程序没有synchronizationcontext

要记住的一件重要事情是,Async/await非常适合I/O绑定的工作,而task.run非常适合CPU绑定的工作。这背后的原因是,当您等待某些I/O绑定操作时,例如通过网络发送数据,您不会浪费任何线程来等待这些操作的完成。你可以在这里读到更多关于这一点的信息。

 类似资料:
  • 我试图了解 Task.Run Wait() 异步等待是如何工作的。 我已经阅读了这个页面:了解在一行中使用Task.Run Wait()异步等待的使用,但不太理解它。 在我的代码中,我从Microsoft EventHub接收事件,并使用实现的类处理它们。我在 () 中调用 方法,这是一个异步方法,这是一个方法。由于该方法是的,因此我使用 和来委派。(即 或< code >。Wait()(该方法是

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

  • 我们有一个async/await方法,它通过实体框架调用存储的过程,该框架由同步方法调用。 需要很长的时间来执行,这可能就是我们编写async/await的原因,它可以被多个地方使用。 我知道我们不应该混合异步和同步调用,但假设我们有这种情况并且我们正在使用 从同步方法 调用异步方法 GetLoanDataAsync,我理解该方法 - 将在后台线程上运行。 我的问题是,如果我们有一个异步方法< c

  • 使用asyn/wait vs wait有什么区别task.run() 等待任务。运行示例- 异步等待示例-

  • 问题内容: 我想同时下载一些文件,例如100个文件。因此,我决定将下载线程添加到调度队列中,GCD会调整同时运行多少个线程。 这里的问题是:中的块将立即完成,因为它将在另一个线程上运行。因此,如果长度为100,它将立即创建100个线程。 如何配置块以等待下载任务完成?我不想使用,因为它只允许同时运行一个下载任务。 问题答案: 要扩展Abhinav的答案,您应该: 使用创建一个组。 在开始每个下载任

  • 问题内容: 我在一个比较大的Web应用程序上工作,后端主要使用PHP。代码中有几个地方需要完成一些任务,但是我不想让用户等待结果。例如,在创建新帐户时,我需要向他们发送欢迎电子邮件。但是,当他们按下“完成注册”按钮时,我不想让他们等到实际发送电子邮件之后,我只想开始该过程,并立即向用户返回一条消息。 到目前为止,在某些地方,我一直在使用exec()感觉像是被黑客入侵。基本上是这样的: 这似乎可行,