编辑:对不起 - 现在我已经更好地理解了这个问题,我认为我的问题出在其他地方
我有 2 个异步请求。
第一个是这样的:
public void DownloadWebData(Uri apiUrl)
{
WebClient client = new WebClient();
client.DownloadDataCompleted += DownloadDataCompleted;
client.DownloadDataAsync(apiUrl);
}
public void DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
{
string result = System.Text.Encoding.UTF8.GetString (e.Result);
Uri downloadLink = (GetUri(result));
}
基本上,它向远程网络服务器发出一个简单的基于 url 的 API 请求,该请求通过 http 返回一些基本的文本数据。GetUri() 只是解析该数据以从数据中提取地址以供下载图像。
然后我在 monotouch.dialog 中使用 imageLoader 来下载图像。所有代码都在同一个类中。
编辑:添加了 imageLoader 代码(我留下了 Console 行,因为它们可以很好地用作评论)。
public void downloadImage (Uri imageUri)
{
var tmp_img = ImageLoader.DefaultRequestImage (imageUri, this);
if (tmp_img != null)
{
adView.Image = tmp_img;
Console.WriteLine ("Image already cached, displaying");
}
else
{
adView.Image = UIImage.FromFile ("Images/downloading.jpg");
Console.WriteLine ("Image not cached. Using placeholder.");
}
}
public void UpdatedImage (System.Uri uri)
{
adView.Image = ImageLoader.DefaultRequestImage(uri, this);
}