Using animated GIFs as "Please Wait" images

I have an animated GIF that I would like to use in my VB .NET application when a process is running. It works fine with asynchronous tasks but the problem I have is with processor intensive tasks, the animation stops until the line of code has been executed.

I have a third party control on one of my forms and it takes two or three seconds to initialise, because I dont have access to the inner workings of the control I cannot use Application.DoEvents.

I have tried putting my GIF on a different form and loading it before the code line runs thinking that it may be on a different thread but it does the same thing.

I dont necessarily think this is a problem with the GIF as I have tried a progress bar in marquee mode, it too stops when it reaches the line of code.

Does anybody know how I can get around this?
Who is Participating?
Jorge PaulinoConnect With a Mentor IT Pro/DeveloperCommented:
You have to use a multi-threads.

Look this example
It looks like you need to use threading.
Thread Programming

Threading in .NET Part 2
3Si_pnewmanAuthor Commented:
I have tried a couple of threading methods but I still cant get it to work, I think the control is locking foreground thread.

I have amended the Microsoft example slightly to try and replicate my problem, it can be found here;9195002;/fileinfo.html

If you click the button the animation and progress bar both stop until the count has finished.
Never miss a deadline with

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

Jorge PaulinoIT Pro/DeveloperCommented:
Can upload in another site ? My system polices filter is locking that site.

Can you use
3Si_pnewmanAuthor Commented:
Jorge PaulinoIT Pro/DeveloperCommented:
You have to lunch a new thead for the cycle  not for the animation. An easy way (I use it allot)

Add a BackGroundWorker to your project then:

Private Sub BackGroundWorker1.DoWork(...) Handler backgroundoworker1.DoWork
    ' Add your cycle
   For x As Integer = 1 to 2000
   Next X
End Sub

And in the event simply do

I don't have an answer offhand but would venture the problem is that the 3rd party control and your animated gifs are both running on the form and both using the message pump thread.  Does the 3rd party control have a visual component or is it just doing some functionality?
3Si_pnewmanAuthor Commented:
It is a report preview control from

There is a method that populates the control with the actual document and it sometimes takes a while.  I have tried creating the controls dynamically and not adding them to the form until all the processing is completed on a separate thread (as suggested by jpaulino) but get all kinds of cross-threading errors.

Looking at the stack trace the errors are coming from the control itself not any of my code, I think I might have to contact support and see if they can suggest anything.
mastooConnect With a Mentor Commented:
I hate to give an "unhelpful" answer but that might be a best first step.  I'm not aware of a practical method of keeping a responsive gui when a visual component won't yield the message pump which is what this sounds like.
3Si_pnewmanAuthor Commented:
Im getting nowhere fast so I think I'll have to give support a go.

Thanks for your help.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.