我有以下代碼:異步方法跳過等待
public async Task<string> GetData(Uri source)
{
if (client.IsBusy == true)
client.CancelAsync();
Task<string> tskResult = client.DownloadStringTaskAsync (source);
string strResult = await tskResult;
return strResult;
}
當我通過這種方法開始Task<string>...
調試器跳到步過return strResult;
而strResult的值爲空。
爲什麼會發生這種情況? 謝謝。
PS:我在調用此方法是這樣的:
StringBuilder的strBuild =新的StringBuilder();
foreach (var image in imageApiUrlLst)
{
string imageModelPull = await callMgr.GetData(new Uri(image)); ///WHY GETS STUCK!
strBuild.AppendLine(imageModelPull);
}
當我複製你的代碼時適合我。 (假設client = WebClient) – 2014-10-20 03:33:07
這是設計的..記住,你不會從你的方法中返回'strResult',即'string'。這種方法的返回類型是'任務' ..研究更多關於異步等待如何工作,以及它是什麼意思..否則它將是一個覆蓋在答案中的太廣泛的主題,或者必須已經在,我敢打賭。 –
2014-10-20 04:13:57
我也試過返回rskResult,問題是根據調試器(我使用Xamarin)調用此方法,但沒有任何結果。調試器不會跳出這個方法。 – RealityDysfunction 2014-10-20 04:34:49