PictureBox1 GDI+ error

G

Guest

Sorry for reposting here but I apparantly managed to pick the wrong
discussion group earlier. Here's my story:

Hi all,

I am developping a simple application that displays an animated weather .gif
in a picturebox. Besides the picturebox there are only a few labels on the
form. The form is called from a module.

The .gif is loaded from the internet via
PictureBox1.ImageLocation = [URL string to image]
and is reloaded every 10 minutes.

Things that I observe:
1) The application NEVER crashes in the IDE running on Windows XP
2) The compiled application DOES crash on all 3 different XP test computers,
including the one that hosts VS 2005 and that is used to develop the app.
Often it crashes repeatedly immediately after starting the program, often
only after a few hours. The program never was able to run for 24 hours.
3) The application NEVER crashes on Windows Vista.

If I deactivate the part that loads the image, the program never crashes, so
I am sure the picturebox is the culprit.

After some Googling on this subject, I tried to replace
PictureBox1.ImageLocation = [URL string to image]
by
Dim WebClient As New System.Net.WebClient
Dim bytes() As Byte = WebClient.DownloadData([URL string to image])
Dim Stream As New IO.MemoryStream(bytes)
PictureBox1.Image = New System.Drawing.Bitmap(Stream)

Unfortunately, that didn't improve much. I do notice, however, that when
adding
Stream.Close
the application DOES crash in the IDE, however the error ignores the
Try..Catch in the Sub that contains the above and is only caught by the Catch
in the Module that loads the Form. If I remove Stream.Close, the app does
crash on XP (but not in the IDE) and not on Vista, just as before.

If the program crashes, the familiar GDI+ error box is shown, without really
much help on what is going on. Most of the times, the PictureBox is replaced
by a white background and a red cross and eventually the labels on the form
are replaced by those red crosses as well. Sometimes it starts with crossing
the labels instead, however. Often even the buttons on the GDI+ error window
get these red crosses(?!).

Does anyone know what is going on here? Thanks in advance!
 
G

Guest

Hmm, nobody an idea?

This is the message I get:

************** Exception Text **************
System.Runtime.InteropServices.ExternalException: A generic error occurred
in GDI+.
at System.Drawing.Image.SelectActiveFrame(FrameDimension dimension, Int32
frameIndex)
at System.Drawing.ImageAnimator.ImageInfo.UpdateFrame()
at System.Drawing.ImageAnimator.UpdateFrames()
at System.Windows.Forms.Label.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e,
Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Label.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg,
IntPtr wparam, IntPtr lparam)


Is somebody able to 'read' and translate this? I have a Label1 on top of (in
front of) the Picturebox1. Is that the problem? Could this be caused by a
repaint problem of the label?

Again: it does not happen in the IDE and not on Vista, only on the XP
computers.
 
M

Mythran

Alice said:
Hmm, nobody an idea?

This is the message I get:

************** Exception Text **************
System.Runtime.InteropServices.ExternalException: A generic error occurred
in GDI+.
at System.Drawing.Image.SelectActiveFrame(FrameDimension dimension,
Int32
frameIndex)
at System.Drawing.ImageAnimator.ImageInfo.UpdateFrame()
at System.Drawing.ImageAnimator.UpdateFrames()
at System.Windows.Forms.Label.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e,
Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Label.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&
m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg,
IntPtr wparam, IntPtr lparam)


Is somebody able to 'read' and translate this? I have a Label1 on top of
(in
front of) the Picturebox1. Is that the problem? Could this be caused by a
repaint problem of the label?

Again: it does not happen in the IDE and not on Vista, only on the XP
computers.

According to the stack trace, the label is getting the paint message to
paint itself (or repaint) and when it begins to update, it bombs off with no
good error message. The "culprit" may or may not be the label, but the
label's painting is throwing the exception....Without attempting more
debugging myself, I don't think I could give a reasonable guess at why it's
throwing the exception. May want to google the exception....<shrug>

HTH,
Mythran
 
A

Arthur Ardolino

I am experiencing the same exact problem. Label with a PictureBox underneath it with an animated gif. The only difference is that my exception says "System.InvalidOperationException: The object is currently in use elsewhere", but other than that, the stack trace is identical.

If you find a solution to this problem, please let me know. Thanks.

EggHeadCafe.com - .NET Developer Portal of Choice
http://www.eggheadcafe.com
 
G

Guest

@Mythran, thanks for your analysis. I did Google but found no solution.
Because of the fact that it doesn't happen in the IDE it makes further
debugging difficult. If I disable the label, it seems not to happen but I
really need this label on top of the picturebox.

@Arthur, same for you: please report in this thread anything you find on
this subject. Do you also notice that it doesn't happen in Vista?
 
M

Mythran

Alice said:
@Mythran, thanks for your analysis. I did Google but found no solution.
Because of the fact that it doesn't happen in the IDE it makes further
debugging difficult. If I disable the label, it seems not to happen but I
really need this label on top of the picturebox.

@Arthur, same for you: please report in this thread anything you find on
this subject. Do you also notice that it doesn't happen in Vista?

Alice,

Can you post a short but complete code example that will repro this
exception? I will check it out if I can get it.

Thanks,
Mythran
 
G

Guest

@Mythran, thanks for your analysis. I noticed the program does not crash when
minimized all the time, that points to repaint indeed.

@Arthur, hope you also report back here when you find something. Do you also
have it only in XP and not in Vista?
 
G

Guest

Alice,
Can you post a short but complete code example that will repro this
exception? I will check it out if I can get it.

I can try, but the error often does not occur until up to 20 hours or so. So
I will need some time testing while 'undressing' the program. Unless I send
you the complete zipped code of the current program but then I would need
your e-mail address to send it to.
 
M

Mythran

Alice said:
I can try, but the error often does not occur until up to 20 hours or so.
So
I will need some time testing while 'undressing' the program. Unless I
send
you the complete zipped code of the current program but then I would need
your e-mail address to send it to.

You can e-mail me the app if you want, or you can cut out any bloat the code
has and just send me a small portion of the app (the part that the crash
occurs)...up to you...

Mythran
kip_potter@(hotmail.com)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top