C# 异步操作后无法在输出窗口Xamarin窗体中显示输出

C# 异步操作后无法在输出窗口Xamarin窗体中显示输出,c#,xamarin,xamarin.forms,async-await,C#,Xamarin,Xamarin.forms,Async Await,我有一个请求位置权限的代码,我想显示输出,无论用户是否拒绝或授予了权限。无论用户是否授予权限,我都不会得到任何输出。我也在清单中指定了权限 这是我的密码: void AskPermissionNew(object sender, EventArgs e) { Task.Run(async () => { var permissionStatus = await CrossPermissions.Current.CheckPermissionStatusAsy

我有一个请求位置权限的代码,我想显示输出,无论用户是否拒绝或授予了权限。无论用户是否授予权限,我都不会得到任何输出。我也在清单中指定了权限

这是我的密码:

void AskPermissionNew(object sender, EventArgs e)
{
    Task.Run(async () =>
    {
        var permissionStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);
        if (permissionStatus != PermissionStatus.Granted)
        {
            var response = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Location);
            var userResponse = response[Permission.Location];

            Debug.WriteLine($"Permission {Permission.Location} {userResponse}");   // I cannot display output here
        }
        else
        {
            Debug.WriteLine($"2 Permission {Permission.Location} {permissionStatus}");
        }
    });
}

您的第一次
等待
可能会引发一个保持沉默的
异常
,因为您没有等待
任务的结果。请运行
,以便不会重新引发异常

如果你写:

异步任务AskPermissionNew(对象发送方,事件参数e)
{
尝试
{
等待任务。运行(异步()=>
{
/* ... */
});
}
例外情况(例外情况e)
{
Print(例如ToString());
}
}

void AskPermissionNew(对象发送方,事件参数e)
{
Task.Run(异步()=>
{
尝试
{
var permissionStatus=等待/**/
}
例外情况(例外情况e)
{
Print(例如ToString());
}
});
}

您可能会看到您当前正在默默忽略的
异常的打印输出。

您为什么这样做?@GabrielLuci,这是另一个问题,在这里,我在使用wait后没有得到任何输出。关于上一个问题,我在等待后无法获得位置。基本上,这是我面临的普遍问题。当我搜索谷歌时,我看到很多关于它根本没有返回的抱怨。所以这可能是你问题的根源。您是否尝试过调试和单步执行代码,以查看
RequestPermissionsAsync
是否实际返回?是的,我认为
RequestPermissionsAsync
存在问题,有关答案,请参阅我上一个问题的答案。@junedkhanomin,请在三天后发布您的评论以回答并标记它,这将帮助其他有类似问题的人,我仍然没有得到任何输出作为一个例外。我试图在try-catch中捕获异常。但是没有引发任何异常。因此我同意Gabriel Luci的观点,即您的第一个
等待
由于某种原因永远不会返回。