Вы должны использовать метод Invoke в форме, например. с анонимным делегатом для внесения изменений в реакцию на событие.
Обработчик события вызывается с другим потоком. Этот 2-й поток не может получить доступ к элементам управления в вашей форме. Он должен «вызвать» их, чтобы позволить потоку выполнить всю управляющую работу, которая их изначально создала.
Вместо:
myForm.Control1.Text = "newText";
Вы должны написать:
myForm.Invoke(new Action(
delegate()
{
myForm.Control1.Text = "newText";
}));