异步等待任务。运行xamarin形式

问题描述 投票:0回答:2

[我只是想确保我很好地理解异步等待与Task.run或Task.whenall之间的区别

所以异步等待就是处理异步方法。这意味着暗含处理顺序。

我运行了很长时间的处理而没有阻塞主线程,我等待结果继续。

对于Task.Run和Task.Whenall,有一个新的多线程概念。这意味着我可以在新线程上启动很长的进程,而不必等待完成才能继续执行代码。该代码在新线程上。然后我可以在此线程上等待方法。

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

而且我使用Task.run使线程在并行运行并独立处理。

这是好方法吗,我的理解很好吗?

谢谢,

c# xamarin.forms async-await task-parallel-library
2个回答
0
投票

是,Task.Run方法是一种将工作卸载到后台线程的简便方法。辅助线程由Task.Run类提供。了解一点关于此类的知识是一个好主意,知道池中饥饿时会发生什么,以及如果您预计会发生这种情况(可以主动使用ThreadPool),可以采取什么措施。

使用ThreadPool比直接使用SetMinThreads实例更方便。任务具有强类型的SetMinThreads,具有Task.Run属性,可以异步地成为Thread,可以与其他任务一起成为Result,并且可以被包装在具有附加功能的其他任务中(例如,将任务包装在一个Result


0
投票

您对Exception / awaitedcombined的理解大部分是正确的。

cancelable wrapper使您可以轻松地在async线程上运行一些代码,并避免阻塞当前线程。创建多个await或使用Task.Run类可让您利用多个CPU内核来更快地完成一些工作。

使用Task.Run / ThreadPool时,一旦任务完成,您可以做一些工作。由于ThreadPool之后的代码Task可以在原始线程上执行,尽管并非总是如此。例如,控制台应用程序没有Parallel

要记住的一件事是Parallel / async对于I / O绑定工作非常有用,而await对于CPU绑定工作很好。其背后的原因是,当您SynchronizationContext某些I / O绑定操作(例如通过网络发送数据)时,您不会在等待此类操作完成时浪费任何线程。您可以阅读有关SynchronizationContext的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.