BitmapImage's ImageOpened event not fired in background agent

650 Views Asked by At

As in the title, the event is not fired when the code is executed in the BackgroundAgent while it works fine when I execute it in my main app.

Here's my code:

var background = new BitmapImage(new Uri(uri), UriKind.Absolute)){ CreateOptions = BitmapCreateOptions.None };
background.ImageFailed += (s, e) =>
{
    Debug.WriteLine(e);
    // Nothing happens here so I guess that there's no error in the image loading
};
background.ImageOpened += (s, e) =>
{
    Debug.WriteLine("ImageOpened");
    // This line is never printed no the event is never thrown
};

Everthing is running in a Dispatcher thread, and I'm trying to load a remote image (I can't cache it because it's a dynamic image generated by a php page).

Any hint?

EDIT:

Here's the code based on @l3arnon's suggestion:

var backgroundImage = new BitmapImage { CreateOptions = BitmapCreateOptions.None };
backgroundImage.ImageOpened += (s, e) =>
{
                Debug.WriteLine("ImageOpened");
};
backgroundImage.UriSource = new Uri(uri);

still no success though.

1

There are 1 best solutions below

0
On

My only guess it that it loads the image so fast that you register the event handler too fast. Try first creating the BitmapImage instance and then setting a uri