У меня есть следующий код:Асинхронный Метод скачет ждут
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);
}
Прекрасно работает для меня, когда я копирую код. (предполагается, что клиент = WebClient) –
Это по дизайну .. помните, вы не возвращаете 'strResult' i.e.' string 'из вашего метода. Тип возвращаемого значения для этого метода: «Задача' .. Узнайте больше о том, как работает async, и что он предназначен для ... В противном случае это будет слишком широкая тема для ответа в ответ или уже должна быть покрыта SO , Я бы держал пари. –
Я тоже пытался вернуть rskResult, проблема в том, что в соответствии с отладчиком (я использую Xamarin) этот метод вызывается, но ничего не выйдет. Отладчик не выпрыгивает из этого метода. – RealityDysfunction