Click here to Skip to main content
11,795,848 members (77,117 online)
Click here to Skip to main content

Never-ending Progress Bar (C#)

, 1 Oct 2004 CPOL 117.1K 2K 54
Rate this:
Please Sign up or sign in to vote.
The VB.NET Never-ending Progressbar now in C#

Sample Image - OSProgress.png


Sometimes you just don’t know how long something will take. Like when your wife says she’ll only be a few minutes in the grocery store…you know what I mean.

The standard ProgressBar that ships with Visual Studio is great for when you know how long something will take, or there is a way to determine just how many steps a process will have. But like the trip to the store with your wife, sometimes you just can’t know how long something’s going to take. That’s why I created this progress bar.

More Information

For more information, please see for the original article and VB.NET source.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Greg Osborne
United States United States
Visual Basic Developer since version 1.0
Java web developer
Currently developing in vb and c#

You may also be interested in...

Comments and Discussions

GeneralAwesome Pin
Jboy20130-Mar-07 7:12
memberJboy20130-Mar-07 7:12 
GeneralHmmmm Pin
tayspen20-Nov-05 17:11
membertayspen20-Nov-05 17:11 
GeneralRe: Hmmmm Pin
tayspen30-Nov-05 9:18
membertayspen30-Nov-05 9:18 
GeneralGreat control, but few idea's & Issue's Pin
Priest Of Psi4-Oct-04 22:54
memberPriest Of Psi4-Oct-04 22:54 
GeneralRe: Great control, but few idea's & Issue's Pin
GregOsborne5-Oct-04 4:39
memberGregOsborne5-Oct-04 4:39 
If you look at the original post in the VB.NET section it explains that if you have a process that blocks, or is busy, whatever is running in that thread will block, hence the control stops scrolling. The class below can be used as a class to <[insert here your process]> on another thread. I'm using it for xml serialization. I'm assuming you are using the progressbar as some sort of indicator on a form while you are processing. Start your progressbar, create an instance of this class, modifying it so that it performs your process, and then call the spinup method When it is complete, the LoadComplete property will be set to true. That's how you will know it's done. Make sure you call the SpinDown method when done. That releases the thread. THat's all there is to it...threading's so COOL!Suspicious | :suss:

Imports System.Threading
Imports System.xml.Serialization
Friend Class DocLoaderThread
Private _Thread As Thread
Private _Document As Document
Private _FileName As String
Private _IsCancelled As Boolean
Private _LoadComplete As Boolean
Public ReadOnly Property LoadedDocument() As Document
Return _Document
End Get
End Property
Public ReadOnly Property LoadComplete() As Boolean
Return _LoadComplete
End Get
End Property
Private Sub Start()
Dim xmlser As New XmlSerializer(GetType(Document))
Dim reader As New StreamReader(_FileName)
_Document = xmlser.Deserialize(reader)
Catch ex As Exception
Me._LoadComplete = True
End Try
End Sub
Private Sub Cancel()
_IsCancelled = True
End Sub
Public Sub Spinup(ByVal FileName As String)
_Document = New Document
_FileName = FileName
Dim ThreadStart As New ThreadStart(AddressOf Me.Start)
_Thread = New Thread(ThreadStart)
End Sub
Public Sub SpinDown()
_Thread = Nothing
End Sub
End Class

Greg Osborne
Microsoft Certified Professional Since 1995
GeneralCan you post your sample working code!Re: Great control, but few idea's &amp; Issue's Pin
Haiyan Du2-May-08 5:00
memberHaiyan Du2-May-08 5:00 
GeneralRe: Can you post your sample working code!Re: Great control, but few idea's &amp; Issue's Pin
Haiyan Du2-May-08 6:22
memberHaiyan Du2-May-08 6:22 
GeneralRe: Great control, but few idea's &amp; Issue's Pin
GregOsborne5-Oct-04 4:49
memberGregOsborne5-Oct-04 4:49 
GeneralFlickering... and solution Pin
LEXXa2-Oct-04 12:45
memberLEXXa2-Oct-04 12:45 
GeneralRe: Flickering... and solution Pin
GregOsborne4-Oct-04 4:31
memberGregOsborne4-Oct-04 4:31 
GeneralRe: Flickering... and solution Pin
polyester16-Nov-04 10:49
memberpolyester16-Nov-04 10:49 
GeneralRe: Flickering... and solution Pin
GregOsborne16-Nov-04 10:55
memberGregOsborne16-Nov-04 10:55 
GeneralRe: Flickering... and solution Pin
polyester17-Nov-04 7:07
memberpolyester17-Nov-04 7:07 
GeneralGreat! but... Pin
Curtis W2-Oct-04 11:24
memberCurtis W2-Oct-04 11:24 
GeneralRe: Great! but... Pin
GregOsborne4-Oct-04 4:29
memberGregOsborne4-Oct-04 4:29 
GeneralRe: Great! but... Pin
Curtis W4-Oct-04 16:00
memberCurtis W4-Oct-04 16:00 
GeneralRe: Great! but... Pin
Anonymous4-Oct-04 16:55
sussAnonymous4-Oct-04 16:55 
GeneralRefreshing Problem + Workaround Pin
Orcrist1-Oct-04 11:25
memberOrcrist1-Oct-04 11:25 
GeneralRe: Refreshing Problem + Workaround Pin
GregOsborne1-Oct-04 11:28
memberGregOsborne1-Oct-04 11:28 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.151002.1 | Last Updated 1 Oct 2004
Article Copyright 2004 by Greg Osborne
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid