我在我的Windows Phone 8應用這種方法,我從一個url如何在異步方法
public async static Task<byte[]> getData(string url)
{
HttpClient client = null;
HttpResponseMessage response = null;
Stream stream = null;
byte[] dataBytes = null;
bool error = false;
try
{
Uri uri = new Uri(url);
client = new HttpClient();
response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
stream = await response.Content.ReadAsStreamAsync();
dataBytes = getDataBytes(stream);
if (dataBytes == null)
{
error = true;
}
else if (dataBytes.Length == 0)
{
error = true;
}
}
catch (HttpRequestException)
{
}
if (error)
{
return getData(url); // this is where the issue is
}
return dataBytes;
}
得到一些數據,但返回任務
return getData(url);
行上所做的那樣,因爲
getData(string)
返回任務。任何想法,我如何可以重寫這個,使其工作?
什麼是'getData(url)'?你正在遞歸地調用相同的方法? –
'返回await getData(url);'可以工作。但總的來說,你應該重寫你的方法來使用循環,而不是在發生錯誤時再次遞歸地調用它。 –
@SriramSakthivel是的,我發生錯誤時遞歸地調用它。 –