1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Не клеится с событиями что-то

Тема в разделе ".NET", создана пользователем Guest, 14 мар 2006.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Репутация:
    0
    Что-то у меня с событиями не клеится.

    Код:
    namespace CTest
    
    {
    
    //Есть интерфейс
    
     public delegate void DelegateLogIpAddr(uint dwIpAddr);
    
    
     [Guid("A7B88840-A812-11cf-8011-00A0C90A8F78")]
    
     public interface IDCCManTest
    
     {
    
     event DelegateLogIpAddr EventLogIpAddr;
    
     void OnLogIpAddr(uint dwIpAddr);
    
             ...
    
     }
    
    //Есть компонент, который должен перехватывать событие OnLogIpAddr интерфейса
    
    public class CTestComp : System.ComponentModel.Component, IDCCManTest
    
    {
    
     ...
    
     public event DelegateLogIpAddr EventLogIpAddr;
    
     public virtual void OnLogIpAddr(uint dwIpAddr)
    
     {
    
       if (EventLogIpAddr != null)
    
          EventLogIpAddr(dwIpAddr); // Так 
    
    }
    
    }
    Почему то в приложение это событие не приходит.
     
  2. mr_ST

    mr_ST Гость

    Репутация:
    0
    Из этого кода мало что понятно. На евент кто нить подписывается? OnLogIpAddr Где нибудь кто нибудь вызывает? Кстати, такие методы как твой OnLogIpAddr обычно объявляют как protected, во избежание.
     
  3. ][tiger

    ][tiger Гость

    Репутация:
    0
    Вообще изначально все неправильно написано. Не с точки зрения работоспособности, а с точки зрения стандартов оформления кода.

    Во-первых:

    public delegate void LogIpAddrEventHandler(object this, LogIpAddrEventArgs e);

    public class LogIpAddrEventArgs: EventArgs
    {
    .....
    }

    Во-вторых, метод On... обычно protected. В-третьих, где вызов OnLogIpAddr? Где подписка на событие? Этот код понятно, что не будет работать.

    Самое главное, что все то, что я сказал - есть в msdn и очень подробно.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей