Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 912
StepTNT Avatar asked Dec 29 '13 13:12

StepTNT


1 Answers

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

like image 119
i3arnon Avatar answered Sep 30 '22 23:09

i3arnon