C# Xamarin.Forms异步/等待操作不起作用

C# Xamarin.Forms异步/等待操作不起作用,c#,xamarin.forms,xamarin.android,C#,Xamarin.forms,Xamarin.android,我有一个简单的Xamarin.android移动应用程序,它正在从本地PC上托管的API获取数据。问题是,当我运行该应用程序时,它不会得到预期的结果 _客户端是一个HttpClient,我可以从emulator的浏览器访问相同的URL并获取数据。下面是我的代码 protected async override void OnAppearing() { string content = await _client.GetStringAsync("http://192.16

我有一个简单的Xamarin.android移动应用程序,它正在从本地PC上托管的API获取数据。问题是,当我运行该应用程序时,它不会得到预期的结果

_客户端是一个HttpClient,我可以从emulator的浏览器访问相同的URL并获取数据。下面是我的代码

 protected async override void OnAppearing()
    {
        string content = await _client.GetStringAsync("http://192.168.10.101:1001/api/todo");
        base.OnAppearing();
    }
一旦我点击F5,emulator就会启动并运行应用程序,但它不会获得任何数据。另外,当我调试时,一旦我点击F10,wait语句将执行一个应用程序,它将继续,不会等待

有人知道这个问题吗

我使用的是API版本9,级别28和visual studio 2019
谢谢。

从官方文档中获取关键字:

wait操作符暂停执行,直到方法的工作完成。同时,控制权返回给调用方。当任务完成执行时,等待表达式的计算结果为

这意味着在某些情况下(我也怀疑你的情况),当等待的方法被执行时,程序处于一种不再重要的状态。如果我是对的话。然后,您可以通过使用
Wait()
Result

protected override void OnAppearing()
{
    string content = _client.GetStringAsync("http://192.168.10.101:1001/api/todo").Result;
    base.OnAppearing();
}
PS


但是,即使使用
Result
对您有效,我建议您花更多时间研究
async/await
,并可能为您正在解决的问题找到更好的解决方案。这是一个很好的起点。

问题是有权限的。我没有在参考资料中设置权限或网络安全配置。几秒钟后它给了我一个错误。一旦我设置好这些东西,它就工作得很好。

谢谢勒隆的回答。但不幸的是,它没有帮助,因为等待操作应该暂停执行,但我的问题是它没有发生。一旦wait语句执行完毕,它将进一步停止执行并退出该方法。是的,我知道async/await,这只发生在Xamarin.android环境中。上述代码在windows和WPF环境中正常工作。您可以在android设备中通过浏览器访问或模拟吗?@LeonLu MSFT,是的,我可以访问该url并从android模拟器的浏览器中获得json格式的结果,或者您可以共享您的演示来重现此问题吗?@LeonLu MSFT,似乎问题是有权限的。我没有在参考资料中设置权限或网络安全配置。几秒钟后它给了我一个错误。