【问题标题】:Async or parallel tasks - C# [duplicate]异步或并行任务 - C# [重复]
【发布时间】:2018-07-05 16:38:50
【问题描述】:

我有一个应用程序需要执行两项 I/O 任务:获取 GPS 位置,通过蓝牙检索一些数据。这两项任务的完成时间可能会有所不同,并且可能需要几秒钟。为了提高应用程序的速度,我想同时启动两个活动,然后等待两者都完成后再继续。

如果我这样做:

bool locationStatus= await GetCurrentLocation();
bool vehicleStatus = await GetVehicleData();

第二个功能是被启动了,还是只有UI没有被屏蔽?

我需要调用并行任务吗?

【问题讨论】:

  • 几个小时前有一个重复的问题。有很多类似的问题有很好的解释。请在发帖前搜索解决方案。
  • 我知道这不是你寻求的快速答案,但我相信你应该投入研究这个。 gist.github.com/staltz/868e7e9bc2a7b8c1f754
  • 通过询问已经回答了 100 次的问题,您不会得到好的答案 - 人们会厌倦一段时间后回答同样的问题。而不是他们一年前写的很好的解释,他们只会发布一个简短的答案
  • @itdoesntwork 该链接与问题无关。无论如何,Rx 并不适用于异步编程,它适用于事件流处理,即使像 Java 这样的其他语言使用这种方式,因为它们缺乏async/await 支持跨度>

标签: c# asynchronous async-await task-parallel-library


【解决方案1】:

您正在直接等待第一个函数。如果你想让函数异步完成,你必须把await放在你需要变量的位置。

例如:

var locationStatus = GetCurrentLocation();
var vehicleStatus = GetVehicleData();

if (await locationStatus && await vehicleStatus)
{
    // Do stuff
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2018-08-18
    • 1970-01-01
    • 2012-11-06
    • 2017-03-14
    • 2013-04-08
    相关资源
    最近更新 更多