6 / 6 / 0
Регистрация: 01.08.2011
Сообщений: 133
1

Можно ли передавать событие по ссылке

20.10.2012, 14:32. Показов 3564. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос скорей риторический. У меня не заработала такая схема:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class A
{
      private Action MyDelegate;
      private Timer MyTimer;
 
      public A ( Action SomeAction ) { MyDelegate = SomeAction; MyTimer = new Timer(); MyTimer.Tick += MyDelegate; }
}
class B
{
      public event Action MyEvent;
      private A MyA;
 
      public B()
      {
           MyA = new MyA(MyEvent);
      }
}
class C
{
      public B MyB;
 
      public C()
      {
            B = new MyB;
            B.MyEvent += Event;
      }
 
      private Event() { \* чёнить *\ }
}
Коротко поясняю: Событие передается по ссылке и выполняется по таймеру. Таймер работает, советы типа Timer.Enabled и Timer.Interval помойму очевидны, да и это схема а не программа. Проблема: подпрограмма Event() никогда не выполняется.
Вопрос: ошибка в моей программе или в C# нельзя передавать события как ссылки?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2012, 14:32
Ответы с готовыми решениями:

Нужно ли передавать итератор в функцию по ссылке?
Добрый день ! Итератор это тот же обьект но с поведением указателя. Нужно ли его в функцию...

Как передавать массив по ссылке, чтобы не работала копия массива?
#include "stdafx.h" #include <iostream> using namespace std; int Min (int a,const int size);...

Как лучше передавать аргумент в функцию - по ссылке или по указателю?
Предположим, что нам нужно в функцию передать значение переменной чтобы по окончанию работы функции...

Зачем при перегрузке инкремента дружественной функцией передавать аргумент по ссылке?
В программе реализованы два инкремента: префиксный и постфиксный. Зачем в функции передавать...

2
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
20.10.2012, 17:01 2
Цитата Сообщение от Romeo13 Посмотреть сообщение
Событие передается по ссылке и выполняется по таймеру
События не могут передаваться по ссылке - передаются только список делегатов, которые уже добавлены в событие.
Иначе бы терялись все преимущества событий, перед обычными делегатами.

Добавлено через 3 минуты
Упростил ваш пример до компилируемого состояния:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    class A
    {
          public Action MyDelegate;
          public A(Action SomeAction) { MyDelegate = SomeAction; }
    }
    class B
    {
          public event Action MyEvent;
          public A MyA;
 
          public B()
          {
              MyEvent += () => Console.WriteLine("added before pass event"); //добавляем один делегат до того как передали MyEvent в другой класс
              MyA = new A(MyEvent);
          }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            b.MyEvent += () => Console.WriteLine("added after pass event"); //добавили делегат после того как педали MyEvent в другой класс
            b.MyA.MyDelegate();
            Console.ReadKey();
        }
    }
Выводится только added before pass event.
2
6 / 6 / 0
Регистрация: 01.08.2011
Сообщений: 133
20.10.2012, 17:43  [ТС] 3
turbanoff, спасибо, доходчиво.
0
20.10.2012, 17:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2012, 17:43
Помогаю со студенческими работами здесь

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

Событие клика по ссылке
Добрый день. Есть страница <BODY > <div id="menu"> <p>тут что то типа ссылок 1</p> ...

Как передавать объекты в функцию по ссылке, как в C++?
Здравствуйте. После программирования на C++ решил попробовать на java написать мобильное...

Событие клика по ссылке в WebBrowser Control?
Как перехватить cобытие клика по ссылке в WebBrowser Control?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru