در مثال زیر به کمک یک BackgroundWorker میخواهیم یک ListBox را پر کنیم :
ابتدا یک BackgroundWorker بنام worker و یک button و listBox به فرم خود اضافه کنید.
delegate void MyDelegate(string s);
void worker_DoWork(object sender, DoWorkEventArgs e)
{
MyDelegate md = new MyDelegate(AddItems);
for (int i = 0; i < 10; i++)
{
this.Invoke(md, (object)("ASync" + i.ToString()));
System.Threading.Thread.Sleep(500);
}
}
private void AddItems(string s)
{
listBox1.Items.Add(s);
}
private void btnASync_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
worker.RunWorkerAsync();
}
مثال بالا + مقایسه آن با حالت بدون استفاده از BackgroundWorker ضمیمه شده است.
یک لینک مفید جهت مطالعه ی بیشتر