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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятна обработка события (делегаты,события) 
:(
    Опции темы
Alexanp
Дата 21.4.2016, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите с правильным написанием метода  SimulateClick(). Вроде работает одинаково в обоих случаях.  
Конструкция "event MyDelegate Click" что означает ? "Click" - это же имя события ? 
В этой конструкции два моих имени "MyDelegate" и "Click" объединяются словом "event" и что получается ?



Код


using System;

delegate void MyDelegate();

class Button
{
  public event MyDelegate Click;

// как правильно писать.  1-ый вариант написания:
  public void SimulateClick()
  {
      Click();
  } 
// или так.  2-ой вариант написания:
  public void SimulateClick()
  {
      MyDelegate deleg = Click;
      deleg();
  } 


};
  
  
class App
{
  static void Handler()  { Console.WriteLine("Hello, World!");  }

  static void Main()
  {
    Button sc = new Button();
    sc.Click += Handler;

    sc.SimulateClick();
  }
};

PM MAIL   Вверх
Angel666
Дата 22.4.2016, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



https://habrahabr.ru/post/213809/
оставляй первый.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 22.4.2016, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если не хочешь проблем с эксепшинами - пиши:
Код

if(this.Click != null)
    this.Click()


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
infarch
Дата 22.4.2016, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(chupachups @  22.4.2016,  09:51 Найти цитируемый пост)
Если не хочешь проблем с эксепшинами - пиши


Надо учесть что другой поток может обнулить Клик уже после проверки, отвязав событие. Надо так:
Код

var c = this.Click;
if(c!=null)
  c();

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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