views:

21

answers:

2

so I have this function which gets called multiple times during my program.

    //global variable
    BitmapImage img;

    private void LoadImageFile(string ImageName)
    {
        WebClient ImageClient = new WebClient();
        ImageClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(ImageFileLoaded);
        xmlClient.DownloadStringAsync(new Uri("/images/"+ImageName, UriKind.RelativeOrAbsolute));
    }

    void ImageFileLoaded(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            img.set = e.Result;



        }
    }

the following code uses the new value of "img" so I want it to start only after img has been assigned the new source but it seems that it runs before that happens

A: 

I would check out this blog by Jeremy Likness.

It uses corountines to help organise async requests. I have used this approach and have dealt with similar issues where I want actions to occur after several async tasks.

Rus
A: 

You want to use WebClient.OpenReadAsync() instead of WebClient.DownloadStringAsync() because you want to read a binary image, not a string.

Then when you get the stream, you call BitmapImage.SetSource() using that stream.

Michael S. Scherotter