StepTNT
StepTNT

Reputation: 3967

BitmapImage's ImageOpened event not fired in background agent

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.

Upvotes: 7

Views: 646

Answers (1)

i3arnon
i3arnon

Reputation: 116636

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

Upvotes: 1

Related Questions