在Xamarin Forms中的PCL中调用同步方法中的异步函数

时间:2015-08-05 13:52:47

标签: c# asynchronous async-await xamarin.forms portable-class-library

我有这个功能:

public async Task<string> GetData() 
{
    var httpClient = new HttpClient();
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "My Link Here...");
    var response = await httpClient.SendAsync(request);
    string value = await response.Content.ReadAsStringAsync ();
    return value;
}

它从webapi获取数据,然后我必须使用该数据使用Steema Teechart在Xamarin Forms中构建图表。问题是我无法在构建图表的类中调用函数GetData(),因为我想要使用数据的方法不是async。我应该如何调用GetData()并使用字符串?

我试过了:

Task<string> s = GetData ();
s.Wait ();
string initialValues = s.Result;

但它会停止我的应用并在一段时间后崩溃。

1 个答案:

答案 0 :(得分:2)

  

问题是我无法在构建图表的类中调用函数GetData(),因为我想要使用数据的方法不是异步的。我应该如何调用GetData()并使用字符串?

您制作调用方法async,然后使用await

string initialValues = await GetData();

是的,这意味着您的调用方法还需要返回Task / Task<T>,这意味着调用方法也应该是async,等async的这种“增长”是完全自然的。