I have a set of custom objects called DataItems that contain the URIs of the images that I want to upload and paste into the collection for my Silverlight . > for use.
When I process each DataItem, I get its SourceUri (for example, http: //..../picture001.png ") and start the download :
void LoadNext()
{
WebClient webClientImgDownloader = new WebClient();
if (loadedItemIndex < RegisteredDataEntries.Count())
{
DataItem dataItem = RegisteredDataEntries[registeredIdCodes[loadedItemIndex]];
if (dataItem.Kind == DataItemKind.Image)
{
webClientImgDownloader.OpenReadCompleted +=
new OpenReadCompletedEventHandler(webClientImgDownloader_OpenReadCompleted);
webClientImgDownloader.OpenReadAsync(new Uri(dataItem.SourceUri,
UriKind.Absolute));
webClientImgDownloader.AddObject(dataItem);
webClientImgDownloader.Headers["idCode"] = dataItem.IdCode;
webClientImgDownloader.ResponseHeaders["idCode"] = dataItem.IdCode;
}
}
else
{
OnLoadingComplete(this, null);
}
}
Then, when the download of this image has completed , I save the image in the collection :
void webClientImgDownloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
dataItemIdCode = e.DataItem.IdCode;
dataitemIdCode = ((DataItem)sender).IdCode;
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(e.Result);
Image image = new Image();
image.Source = bitmap;
Images.Add(dataItemIdCode, image);
}
IdCode DataItem OpenReadCompleted, IdCode?
:
, , ::
webClientImgDownloader.OpenReadAsync(new Uri(dataItem.SourceUri,
UriKind.Absolute), dataItem);
...
DataItem dataItem = e.UserState as DataItem;