Solved

BackgroundWorker

Posted on 2008-10-02
4
939 Views
Last Modified: 2013-12-17
I have a form that load data from a database.  While the form is loading I have a pop-up window that says please wait.  I am trying to use the backgroundworker to have it run while the form is loading and disappear after it is done.    How do I use the BackgroundWorker methods (DoWork, RunWorkerCompleted, ProgressChanged) to open a dialog that says "please wait while form is loading" and then automatically closes once the form has loaded.
0
Comment
Question by:MichelleLacy
  • 3
4 Comments
 
LVL 53

Expert Comment

by:Dhaest
Comment Utility
You can also use a toolstripstatusbar like this example:
http://www.c-sharpcorner.com/UploadFile/LivMic/BGWorker07032007000515AM/BGWorker.aspx
0
 
LVL 53

Accepted Solution

by:
Dhaest earned 500 total points
Comment Utility
Use the BackgroundWorker component in .NET 2.0.

private Form pleaseWait;
 

private void buttonStart_Click(object sender, EventArgs e)

{

    pleaseWait = new FormPleaseWait();

    pleaseWait.Show();

    backgroundWorker1.RunWorkerAsync();

}
 

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

{

    // Perform a long-running operation here...

}
 

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

{

    pleaseWait.Close();

} 

Open in new window

0
 
LVL 53

Expert Comment

by:Dhaest
Comment Utility
I use the ToolStripProgressBar and a label to update the page as the long running process is running in my class.

I have a Win Form called frmActivation and the big process is in a class called cActivation.
So showing the relevant parts I have:

Source: http://discuss.joelonsoftware.com/default.asp?dotnet.12.563832.5
Public Class frmActivation

'The class that has the long running process in it.

  Private WithEvents _Activation As ADEActivationLib.AdvancedDigitalEngines.cActivation

  Private _tspb As ToolStripProgressBar
 

' The start of the big process

    Private Sub Submit()

    

...

        _tspb = CType(CType(Me.ParentForm, MDIParent1).ToolStrip1.Items("ToolStripProgressBar1"), ToolStripProgressBar)

        _tspb.Enabled = True

        _tspb.Value = 10

        Me.lblStatus.Text = "Please Wait, this may take a minute or two."

        Me.lblStatus.Visible = True

        Me.Refresh()
 

    _Activation = New ....
 
 

    End Sub
 
 
 

'An update method that gets called by cActivation at different steps in its processing. 

'Notice the "Handles" part.
 

    Private Sub StatusUpdate(ByVal Message As String) Handles _Activation.StatusChanged

        Me.lblStatus.Text = Message

        _tspb.Value = _tspb.Value + 10

        Me.Refresh()
 

    End Sub
 

End Class
 

'Then in cActivation at different steps I have the following calls:
 

RaiseEvent StatusChanged("Setting up Activation")

RaiseEvent StatusChanged("Getting License from WebService")

RaiseEvent StatusChanged("Geting Current keys if any")

RaiseEvent StatusChanged("Confirming License")

RaiseEvent StatusChanged("Evaluating / Saving License")

etc.

Open in new window

0
 
LVL 5

Expert Comment

by:jose_juan
Comment Utility
Hi,

set WorkerReportsProgress to true.
define the RunWorkerCompleted to a event handler, when this will be fired then close your window alert.

Good luck!
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Recently while returning home from work my wife (another .NET developer) was murmuring something. On further poking she said that she has been assigned a task where she has to serialize and deserialize objects and she is afraid of serialization. Wha…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This video discusses moving either the default database or any database to a new volume.
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now