Вот моя проблема, у меня есть класс, у которого есть объект, который генерирует событие, и в этом случае я выбрасываю пользовательское событие из своего класса.Но, к сожалению, исходный объект генерирует событие из другого потока, поэтому мое событие также генерируется в другом потоке.Это вызывает исключение, когда мое пользовательское событие пытается получить доступ из элементов управления.
Вот пример кода для лучшего понимания:
class MyClass
{
// Original object
private OriginalObject myObject;
// My event
public delegate void StatsUpdatedDelegate(object sender, StatsArgs args);
public event StatsUpdatedDelegate StatsUpdated;
public MyClass()
{
// Original object event
myObject.DoSomeWork();
myObject.AnEvent += new EventHandler(myObject_AnEvent);
}
// This event is called on another thread while myObject is doing his work
private void myObject_AnEvent(object sender, EventArgs e)
{
// Throw my custom event here
StatsArgs args = new StatsArgs(..........);
StatsUpdated(this, args);
}
}
Поэтому, когда в моей форме Windows я вызываю, попробуйте обновитьЭлемент управления из события StatsUpdated Я получаю исключение кросс-потока, потому что оно было вызвано в другом потоке.
Что я хочу сделать, это сгенерировать свое пользовательское событие в исходном потоке класса, чтобы в нем мог использоваться элемент управления.
Кто-нибудь может мне помочь?