Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов события из делагата, вызванного по событию, событие из события 
:(
    Опции темы
Sonyk
Дата 28.9.2010, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 30.6.2008

Репутация: нет
Всего: нет



Здравствуйте!

У меня есть свой класс, который включает в себя приватную переменную типа SerialPort, которая нужня для создания соединения с COM портом. При успешном определении нужного порта, объект класса добавляет делегат на событие получения данных с этого порта. В этом делегате вызывается собственное событие класса, которое необходимо для обеспечения взаимосвязи с пользовтельским интерфейсом. Проблема в том, что событие из делегата события почему-то не вызывается :(

Выглядит всё примерно так:

Код

    public class Collector
    {
        ...
        SerialPort      m_comPort;

        public event EventHandler CollectorEvent;

        protected virtual void OnDataReady(EventArgs e)
        {
            if (this.CollectorEvent != null)
            {
                this.CollectorEvent(this, e);
            }
        }

        public bool DetectPort()
        {
            ...
            m_comPort.DataReceived += new SerialDataReceivedEventHandler(m_comPort_DataReceived);
            ...
        }

        void m_comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            ...
            Console.WriteLine("TThis message IS displayed!");
            this.OnDataReady(new EventArgs());
            ...
        }
        public void Write(string cmd)
        {
            if (state == DeviceState.Free)
            {
                m_cmdBuf = cmd;

                m_comPort.Write(m_cmdBuf);

                return;
            }

            Console.WriteLine("Device not ready.");
        }
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        dev1 = new Collector();
        

        if (dev1.DetectPort())
        {
            dev1.CollectorEvent += new EventHandler(dev1_Data);
        }

                dev1.Write("Test");
    }

    void dev1_Data(object sender, EventArgs e)
    {
        Console.WriteLine("This message IS NOT displayed!");
    }


Может уже слишком поздно и я что-то упускаю из вида, но вроде всё кажется слишком просто, чтобы что-то упустить.
Спасибо за внимание!
PM MAIL   Вверх
sCreator
Дата 29.9.2010, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 20.8.2009
Где: Московская област ь

Репутация: 1
Всего: 5



Может DataReceived наступает раньше присоединения dev1_Data ?
PM   Вверх
Sonyk
Дата 29.9.2010, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 30.6.2008

Репутация: нет
Всего: нет



в моем случае не может быть данных на ком-порте до команды Write. Ещё я попробовал использовть делегат в классе Collector и устанавливал его из формы. Делегат тоже не вызывается из того места. Вообще, логично предположить, что this.CollectorEvent == null, но почему?!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1128 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.