Есть ActiveX-элемент. Создал для него обертку через tlbimp.exe и использую его в своем коде примерно так:
class C
{
ActiveXClass _object1;
public C()
{
_object1 = new ActiveXClass();
_object1.Event1 += new EventHandler(Method1);
_object1.Event2 += new EventHandler(Method2);
}
public void Method1(object sender, EventArgs e)
{
// вот отсюда если обращаться к _object1 то ничего не происходит
// событие в другом потоке
//
}
public void Method2(object sender, EventArgs e)
{
// вот отсюда если обращаться к _object1 то ничего не происходит
// событие в другом потоке
//
}
}
Все методы и свойства элемента _object1 отрабатывают на ура, пока не доходит до обработки событий. Как я понимаю, они обрабатываются в другом потоке, в котором я не могу обращаться к объекту _object1, его методам и свойствам.
Как сделать, чтобы это было возможно ? Может есть шаблон на этот случай ?
А> public void Method1(object sender, EventArgs e)
А> {
А> // вот отсюда если обращаться к _object1 то ничего не происходит
А> // событие в другом потоке
А> //
А> }
Наверно, можно как-то так:
public void Method2(object sender, EventArgs e)
{
var obj1 = sender as ActiveXClass;
// здесь вызываем нужные методы ActiveXClass
}
Здравствуйте, Аноним, Вы писали:
А>Наверно, можно как-то так:
А>А>public void Method2(object sender, EventArgs e)
А> {
А> var obj1 = sender as ActiveXClass;
А> // здесь вызываем нужные методы ActiveXClass
А> }
А>
Наверно, или точно ? Могут ли при таких вызовах быть "косяки" с многопоточностью ?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Наверно, можно как-то так:
А>>А>>public void Method2(object sender, EventArgs e)
А>> {
А>> var obj1 = sender as ActiveXClass;
А>> // здесь вызываем нужные методы ActiveXClass
А>> }
А>>
А>Наверно, или точно ? Могут ли при таких вызовах быть "косяки" с многопоточностью ?
Вообще, это обычный шаблон работы с событиями. Косяки могут быт, если объект, выбросивший событие, не позаботился передать ссылку на себя в sender-е. А с многопоточностью косяков может быть куча, не зависимо от того, обработчик ли это события или нет.