异步或并行任务 - C#

gre*_*egm 0 c# asynchronous task-parallel-library async-await

我有一个应用程序,我需要做两个I/O任务:获取GPS位置,通过蓝牙检索一些数据.这两项任务都可以在不同时间内完成,并且可能需要很长时间.为了提高应用程序的速度,我想同时启动两个活动,然后等待两个活动完成再继续.

如果我这样做:

bool locationStatus= await GetCurrentLocation();
bool vehicleStatus = await GetVehicleData();
Run Code Online (Sandbox Code Playgroud)

第二个功能是否被启动,或者只是未被阻止的UI?

我需要调用并行任务吗?

Jer*_*dev 6

您正在直接等待第一个功能.如果要让函数完全异步,则必须将其放在await需要变量的位置.

例如:

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

if (await locationStatus && await vehicleStatus)
{
    // Do stuff
}
Run Code Online (Sandbox Code Playgroud)