我已经从绝对URL下载了200个图像,并存储在独立的存储中。我想一个接一个地显示在我的列表或堆叠面板中。我希望堆栈面板显示加载符号,直到下载完成,第200个图像存储在隔离存储中。
if (h < 150)
{
WebClient m_webClient = new WebClient();
Uri m_uri = new Uri("http://d1mu9ule1cy7bp.cloudfront.net/2012/media/catalogues/47/pages/p_" + h + "/IKEA_mobile_high.jpg");
m_webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
m_webClient.OpenReadAsync(m_uri);
}
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
int count;
try
{
Stream stream = e.Result;
byte[] buffer = new byte[1024];
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
//isf.Remove();
using (System.IO.IsolatedStorage.IsolatedStorageFileStream isfs = new IsolatedStorageFileStream("IMAGES" + loop2(k) + ".jpg", FileMode.Create, isf))
{
count = 0;
while (0 < (count = stream.Read(buffer, 0, buffer.Length)))
{
isfs.Write(buffer, 0, count);
}
stream.Close();
isfs.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
GetImages();
}
}
}
如果您只想显示这个长时间运行的任务的进度,那么只需添加一个ProgressBar
。将Minimum
设置为0,将Maximum
设置为200(或者无论您要下载多少图像),然后当每个图像下载报告完成时,只需将ProgressBar的Value
增加一。
一旦下载了所有图像(即值==最大值),您就知道可以删除加载指示器。
你可能还应该考虑为用户提供一种取消下载的方法,以及你是否真的必须下载所有图像才能使用该应用程序。