从同步MainPage中的异步任务列表

时间:2018-02-18 19:18:51

标签: c# xaml xamarin xamarin.forms async-await

我真的在寻找解决方案,找不到合适的指示。 我在RestService.cs中有异步方法

body

我想在我的主页中使用它,但当然我不能使用等待同步方法。我发现有些开发人员建议将异步任务放在例如OnStart方法中:https://xamarinhelp.com/xamarin-forms-async-task-startup/ 我需要将返回的列表绑定到Xaml中的选择器,但当然在尝试使用时:

 public async static Task<List<Convert>> CheckBTCUSDAsync()
        {
            HttpClient client = new HttpClient();
            string restUrl = 
    "https://bitbay.net/API/Public/BTCUSD/trades.json";
            HttpResponseMessage responseGet = await 
    client.GetAsync(restUrl);
            if (responseGet.IsSuccessStatusCode)
            {
                var response = await responseGet.Content.ReadAsStringAsync();
                List<Convert> currencies = Convert.FromJson(response);
                //Debug.WriteLine(currencies[0].Date);
                return currencies;
            }
            else
            {
                //Debug.WriteLine("***************");
                //Debug.WriteLine("*****FALSE*****");
                //Debug.WriteLine("***************");
                return null;
            }
        }

它挂起了UI线程。任何人都知道解决这个问题的最佳/最简单方法是什么?

1 个答案:

答案 0 :(得分:2)

这就是我在应用程序上的工作方式

var convert = Task.Run(() => RestService.CheckBTCUSDAsync()).Result;