从异步函数中获取值

时间:2016-01-06 14:13:30

标签: win-universal-app windows-10-universal

我尝试从函数中获取一个值并将其显示在我的TextBox“total1”中,这是我的代码:

public async void getListePerSearche()
        {
total1.Text = getResultsNumber().Result;
       }

这是我从其他Web服务发送到我的TextBox的值的函数:

public async System.Threading.Tasks.Task<string> getResultsNumber()
        {
            string numbers;
            try { 
            UriString3 = "MyURL.php";
            var http = new HttpClient();
            http.MaxResponseContentBufferSize = int.MaxValue;
            var response = await http.GetStringAsync(UriString3);//the debugger stops here
            var rootObject = JsonConvert.DeserializeObject<NvBarberry.Models.RootObject>(response);
            numbers = rootObject.total;
                return numbers;
            }
            catch (Exception e)
            {
                return e.Message.ToString();
            }  
        }

问题是调试器在此行停止,我没有收到任何错误消息或者甚至没有读取catch块,

 var response1 = await http1.GetStringAsync(UriString3);

所以,请问如何更正我的代码,将getResultsNumber方法中的变量值发送到getListePerSearche方法

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

只需使用await关键字:

public async void getListePerSearche()
{
    total1.Text = await getResultsNumber();
}

如果使用Task对象的属性.Result,则进行阻止操作。但是UI线程上不允许阻塞操作。