C #, WPF Подписка на внешнее событие в коде - PullRequest
1 голос
/ 25 мая 2011

Я пытаюсь подписаться на событие во внешнем классе, используя выделенный код в WPF, и у меня явно не получается.

У меня есть внешняя библиотека, которая использует ActiveMQ.NMS API для связи с брокером ислушать асинхронно по теме.Для второго нам нужно зарегистрироваться на событие под названием consumer.Listener .Все работало идеально, пока не был создан проект WPF со ссылкой на библиотеку и попыткой подписаться на событие из code-behind (в коде позади я вызвал экземпляр объекта, отвечающего за связь с брокером, создал обработчик и зарегистрировалэто).

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

Кроме того, каков рекомендуемый шаблон для работы с внешними событиями в WPF?

Спасибо за ваш отзыв :)

1 Ответ

0 голосов
/ 25 мая 2011

Я собираюсь предположить, что когда вы говорите «внешние события», вы просто подразумеваете публичные события, выставленные каким-либо объектом. Однако вы используете термин «внешний» при обращении к библиотеке, которая использует ActiveMQ.NMS API ... поэтому я предполагаю, что в этом контексте вы имеете в виду, что это библиотека за пределами вашей базы кода, что-то, что вы импортируете, ссылаетесь и т.д. Пожалуйста, исправьте / отредактируйте ваш напишите, если я неправильно понимаю.

Предполагая, что "потребитель" - это объект внутри библиотеки, на которую вы ссылаетесь в своем проекте, после того, как вы создадите экземпляр "потребителя", у вас должен появиться фрагмент кода, который выглядит примерно так:

consumer.Listener += new WhateverTheHandlerEventArgsIsCalledHere(consumer_Listener);

После того, как вы введете «new», intellisense должен заполнить все остальное автоматически, если вы дважды нажмете клавишу Tab.

Я не знаю, почему вы думаете, что большинство разработчиков презирают вас за то, что вы думаете об этом ... обычно это хорошая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...