There are times when you need to do some heavy work. Of course there are times in every one's life when mom forces you to clean your room, but I am not talking about that “heavy” work, not now I mean. From heavy work I mean like when you need to iterate in a very large collection to make changes in its entities or something like that. If you are planning to do it in the main thread of Silverlight itself, then believe me buddy, you are in serious trouble. Doing that kind of stuff might block your user interface.
So here comes background worker in the picture. As the name itself suggests, background worker means…background worker. It is actually a thread with completed event. There are two basic events in Background worker that actually do work, yeah I mean literally,
- DoWork
- RunWorkerCompleted
are the two. DoWorker do the heavy lifting. RunWorkerCompleted is called when DoWorker completed doing heavy lifting. Let me first give you my mainpage.cs class which have Background worker initialized and its events created.
1: public partial class MainPage : UserControl
2: {3: readonly BackgroundWorker _bWorker = new BackgroundWorker();
4: 5: public MainPage()
6: { 7: InitializeComponent(); 8: _bWorker.DoWork += _bWorker_DoWork; 9: _bWorker.RunWorkerCompleted += _bWorker_RunWorkerCompleted; 10: } 11: 12: void _bWorker_DoWork(object sender, DoWorkEventArgs e)
13: {14: //Heavy lifting goes here
15: } 16: 17: void _bWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
18: {19: //When heavy lifting completed
20: } 21: }
Join the conversation! Your thoughts help the community grow.