我想我可能在这里混淆了一个基本的异步概念。我有一个主要方法,我想在执行任何其他操作之前获得电话权限。这里看起来很奇怪,因为我知道我需要等待,因为在代码中使用了
async
方法,但我也知道我想在做任何其他事情之前等待,所以我在 Wait
上标记了我的代码:
namespace CellularSignal1;
public partial class SplashPage : ContentPage
{
public SplashPage()
{
InitializeComponent();
var perm = Task.Run(async () => await Permission.CheckLocationPermission()).Wait();
// do something with perm
}
}
public static class Permission
{
public static PermissionStatus LocationPermission = PermissionStatus.Denied;
public static Task<PermissionStatus> CheckLocationPermission()
{
return await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
}
}
我现在所拥有的似乎违背了异步的目的,因为我在最后添加了
.Wait()
。最终,我想要做的就是在不阻塞 UI 线程的情况下获取位置权限,但还要等到我可以获取perm
。 SplashPage 是我的主要课程页面,所以我不认为我也想使其异步。我的问题是,有没有更好的方法来做到这一点?