I have a multi-step BackgroundWorker process. I use a marquee progress bar because several of these steps are run on a iSeries server so there isn’t any good way to determine a percentage. What I am envisioning is a label with updates after every step. How would you recommend updating a label on a winform to reflect each step?
Figured I would add a bit more. I call some CL and RPG programs via a stored procedure on an iSeries (or IBM i or AS/400 or a midrange computer running OS/400… er… i5/OS (damn you IBM for not keeping the same name year-to-year)).
Anyway I have to wait until that step is fully complete before I can continue on the winform side. I was thinking of sending feedback to the user giving the major steps.
- Dumping data to iSeries
- Running month-end
- Creating reports
- Uploading final results
I probably should have given this in the beginning. Sorry about that. I try to keep my questions general enough for others to make use of later rather than my specific task.
This is one of the points of a background worker in essence. Use a
ProgressBarand just determine how far along the progress is, according to your algorithm.(As has been mentioned, if they’re 10% through, send
10, if they’re 50% through, send50)Using a
BackgroundWorkerbgWrkAdd the following event:
After each major step that you think deserves a user updates do the following:
bgWrk.ReportProgress(intValue);A couple of notes:
You can pass an
Objectas well in theReportProgress()method, so you would be able to update a label with a string object etc, however a progress bar is still the universal symbol of “hold on, i’m doing something”If you have any indeterminate polling, and you are using a
ProgressBar, try use it as an Indeterminate ProgressBar, or a spinner or such. WPF has a built in property to make a progress bar indeterminate which is useful.