Я создал простую форму, которая создает два класса A и B. Класс A запускает поток, который генерирует событие и каждую секунду. Класс B подписывается на это событие и обновляет метку. Код выглядит примерно так:
класс А ...
public delegate void MyEventHandler(string text);
public event MyEventHandler MyEvent;
...
int i = 0;
if(MyEvent != null)
MyEvent(i.ToString());
i++;
класс B ...
public delegate void MyEventHandler(string text);
void IncomingEvent(string text)
{
if(InvokeRequired)
Invoke(new MyEventHandler(IncomingEvent), text);
else
label.Text = text;
}
Этот код работает, как и ожидалось, пока я не попытаюсь закрыть форму. При закрытии строки Invoke выдается исключение InvalidOperationException. Я предполагаю, что это потому, что моя форма была удалена до моего последнего события. Я, очевидно, могу поймать это исключение и подложить его под ковер, как будто его никогда не было, но мне любопытно, как это правильно сделать. Заранее спасибо за помощь.