Обработка событий от импортированного ActiveX-элемента
От: Аноним  
Дата: 25.03.10 08:59
Оценка:
Есть 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, его методам и свойствам. Как сделать, чтобы это было возможно ? Может есть шаблон на этот случай ?
Re: Обработка событий от импортированного ActiveX-элемента
От: Аноним  
Дата: 25.03.10 12:52
Оценка:
А> public void Method1(object sender, EventArgs e)
А> {
А> // вот отсюда если обращаться к _object1 то ничего не происходит
А> // событие в другом потоке
А> //
А> }

Наверно, можно как-то так:

public void Method2(object sender, EventArgs e)
        {
            var obj1 = sender as ActiveXClass;
            // здесь вызываем нужные методы ActiveXClass
        }
Re[2]: Обработка событий от импортированного ActiveX-элемент
От: Аноним  
Дата: 25.03.10 14:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Наверно, можно как-то так:


А>
А>public void Method2(object sender, EventArgs e)
А>        {
А>            var obj1 = sender as ActiveXClass;
А>            // здесь вызываем нужные методы ActiveXClass
А>        }
А>


Наверно, или точно ? Могут ли при таких вызовах быть "косяки" с многопоточностью ?
Re[3]: Обработка событий от импортированного ActiveX-элемент
От: Аноним  
Дата: 26.03.10 11:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Наверно, можно как-то так:


А>>
А>>public void Method2(object sender, EventArgs e)
А>>        {
А>>            var obj1 = sender as ActiveXClass;
А>>            // здесь вызываем нужные методы ActiveXClass
А>>        }
А>>


А>Наверно, или точно ? Могут ли при таких вызовах быть "косяки" с многопоточностью ?


Вообще, это обычный шаблон работы с событиями. Косяки могут быт, если объект, выбросивший событие, не позаботился передать ссылку на себя в sender-е. А с многопоточностью косяков может быть куча, не зависимо от того, обработчик ли это события или нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.