При вызове метода к элементу управления, если вызывающий объект находится в другом потоке, чем тот, на котором был создан элемент управления, вам необходимо вызвать с помощью Control.Invoke . Вот пример кода:
// you can define a delegate with the signature you want
public delegate void UpdateControlsDelegate();
public void SomeMethod()
{
//this method is executed by the background worker
InvokeUpdateControls();
}
public void InvokeUpdateControls()
{
if (this.InvokeRequired)
{
this.Invoke(new UpdateControlsDelegate(UpdateControls));
}
else
{
UpdateControls();
}
}
private void UpdateControls()
{
// update your controls here
}
Надеюсь, что это поможет.