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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подписка на свое событие 
V
    Опции темы
wester
Дата 25.9.2013, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток. Написал свое событие, но вот подписаться на него не могу 

Код

//Downloader.cs
// DownloadCompleteEventArgs наследуется от EventArgs
 public delegate void DownloadCompleteHandler(object sender, DownloadCompleteEventArgs e);
        public event DownloadCompleteHandler OnDownloadComplete;

        protected void DownloadComplete(bool allowedContinue)
        {
            var handler = OnDownloadComplete;
            if (handler == null)
            {
                Debug.WriteLine("null eventHandler");
                return;
            }

            OnDownloadComplete(this, new DownloadCompleteEventArgs(allowedContinue));
        }

//Form1.cs
public MainWindow()
        {
            downloader=new Downloader();
            
            InitializeComponent();
// пытаюсь подписаться на событие
           downloader.OnDownloadComplete +=OnDownloadComplete1;
           }
 private void OnDownloadComplete1(object sender, DownloadCompleteEventArgs e)
        { //some code
     }
 

 Но в самом методе DownloadComplete(bool)  событие не вызывается, так как handler=null. 
Подскажите пожалуйста, где я ошибся


UPD Запутался в собственном коде. У меня в одном из методов на форме создавался новый экземпляр downloader, что и приводило к таким результатам. Тему помечаю решенной, и модераторы, будьте добры удалите её

Это сообщение отредактировал(а) wester - 25.9.2013, 16:01
PM MAIL   Вверх
jsharp36
Дата 25.9.2013, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А из кода ничего не ясно. Он вырван из другого класса.

Очевидно, если handler = null, то так оно и есть. Судя из этого кода, подписка идет в конструкторе MainWindow(), причем после отработки конструктора Downloader(). Значит, либо вы нигде не вызываете конструктор MainWindow(), т.е. не создаете объекта окна, либо вызываете метод
protected void DownloadComplete(bool allowedContinue)
из конструктора Downloader. Т.е. тогда, когда еще не было никакой подписки на события. А вообще, используйте режим Debug и точки останова - узнаете, как работает ваша программа и в какой очередности.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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