Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 27

Не вызывается событие

19.07.2018, 12:06. Показов 1852. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При подключении к серверу на сервере должно вызываться событие. Но по какой-то причине этого не происходить. На клиенте при подключении вызывается такое же событие и клиент отправляет данные.
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public void Listening()
        {
            ListenerServer.Start();
            Task.Factory.StartNew(() => {
                while (Data.Settings.Listening)
                {
                    var client = ListenerServer.AcceptTcpClient();
                    Connect?.Invoke(client);//событие при подключении
                    Thread.Sleep(10);
                }
            });
        }
В чем может быть проблема? На событие подписан, клиент подключается, а на сервере событие не вызывается.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.07.2018, 12:06
Ответы с готовыми решениями:

Не вызывается собственное событие
Есть класс машина, хочу написать событие, которое бы говорило, что машина врезалась в форму delegate void MyEventCrash(); //делегат ...

Background Worker событие completed не вызывается
Всем привет. Есть класс bypasser, у него есть наследник Cloudflare. В bypasser есть метод Start, создающий бекграунд воркер и...

Какое событие вызывается при нажатии клавиш
у меня такой вопрос как при помощи событий отследить нажатие кнопки ф1 и открыть форму 2 (это нужно сделать именно при помощи событий...

10
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
19.07.2018, 12:35
Возможно происходит ошибка или на события нет подписи.
А вообще поставьте точку остановы и посмотрите что там происходит.

Как вы подписываетесь на события?
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 27
19.07.2018, 12:41  [ТС]
server.Connect += Server_Connect;
Точка остановы ставлю на событии и программа до нее не доходит.
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
19.07.2018, 12:49
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        
public void Listening()
        {
            ListenerServer.Start();
            Task.Factory.StartNew(() => 
           {//сюда точку ставы
                while (Data.Settings.Listening)
                {
                    var client = ListenerServer.AcceptTcpClient();
                    Connect?.Invoke(client);//событие при подключении
                    Thread.Sleep(10);
                }
            });
        }
и как вариант вынести метод отдельно

Добавлено через 3 минуты
Возможно ошибка происходит из-за обращения к ListenerServer из другова потока
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 27
19.07.2018, 12:52  [ТС]
Не помогает, программа останавливается при подключении клиента и событие не вызывается.
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
19.07.2018, 13:02
Полный код скиньте из этого куска нечего непонятно
программа останавливается из-за ошибки скорей всего
и зачем было выносить проход по циклу в отдельную задачу смысла тут не вижу обработка будит идти в потоке Connect
то есть в основном

Добавлено через 2 минуты
сделайте так
C#
1
2
3
4
5
6
7
8
9
public void Listening()
        {
            ListenerServer.Start();
            while (Data.Settings.Listening)
            {
                    var client = ListenerServer.AcceptTcpClient();
                    Connect?.Invoke(client);            
            }
        }
и проверьте, а вообще он тут не нужен
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 27
19.07.2018, 13:09  [ТС]
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class Server
    {
        public delegate void Connected(TcpClient client);
 
        public event Connected Connect;
 
        public delegate void Disconnected(Client client);
 
        public event Disconnected Disconnect;
 
        public delegate void PacketEvent(Client client, IPacket packet);
 
        public event PacketEvent GetPacket;
 
        public List<Client> ListConnectedClients { get; set; }
 
        public TcpListener ListenerServer { get; set; }
 
        Serializer Serializer { get; set; }
 
        public Server()
        {
            ListenerServer = new TcpListener(IPAddress.Any, Data.Settings.Port);
            Serializer = new Serializer(RegistryPackets.GetTypePacket());
            ListConnectedClients = new List<Client>();
        }
 
        public void Listening()
        {
            ListenerServer.Start();
            Task.Factory.StartNew(() => 
            {
                while (Data.Settings.Listening)
                {
                    var client = ListenerServer.AcceptTcpClient();
                    Connect?.Invoke(client);
                    Thread.Sleep(10);
                }
            });
        }
 
        public void Stop()
        {
            for (int i = 0; i < ListConnectedClients.Count; i++)
            {
                ListConnectedClients[i].Disconnect();
            }
            ListenerServer.Stop();
        }
 
        public void Receive()
        {
            Task.Factory.StartNew(()=> {
                while (Data.Settings.Listening)
                {
                    if (ListConnectedClients.Count > 0)
                    {
                        for (int i = 0; i < ListConnectedClients.Count; i++)
                        {
                            if (!ListConnectedClients[i].ConnectedClient.Connected)
                            {
                                Disconnect?.Invoke(ListConnectedClients[i]);
                                ListConnectedClients[i].Disconnect();
                                ListConnectedClients.RemoveAt(i);
                                continue;
                            }
                            try
                            {
                                MainPacket MP = (MainPacket)Serializer.Deserialize(ListConnectedClients[i].Stream);
                                if (MP != null)
                                    GetPacket?.Invoke(ListConnectedClients[i], PacketHelper.ParsingPacket(MP));
                            }
                            catch { }
                        }
                    }
                    Thread.Sleep(10);
                }
            });
        }
 
        public IPacket ReceiveConnect(TcpClient client)
        {
            var p = (MainPacket)Serializer.Deserialize(client.GetStream());
            return PacketHelper.ParsingPacket(p);
        }
    }
Добавлено через 5 минут
Без потока цикл морозит форму.
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
19.07.2018, 13:15
Listening() вызывается после после подписи на события?
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 27
19.07.2018, 13:18  [ТС]
Подпись на событии в конструкторе формы а вызов метода по нажатию на кнопку
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
19.07.2018, 13:29
Цитата Сообщение от FloydRed Посмотреть сообщение
Без потока цикл морозит форму.
а без потока работает?

а зачем в тут
ListenerServer.Start();
при каждом нажатии кнопки он будит стартовать а если уже работает?
все же мне кажется
var client = ListenerServer.AcceptTcpClient();
и тукт происходит ошибка из-за обращения из другова потока
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 27
19.07.2018, 13:41  [ТС]
Если сервер уже работает то при нажатии на кнопку он останавливается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.07.2018, 13:41
Помогаю со студенческими работами здесь

Принудительно вызвать событие, если произошло другое событие
Сразу оговорюсь, это тема про события, а НЕ про Windows Forms, да бы ни кто не переносил тему. В Windows Forms у тех или иных...

Не вызывается событие MouseWheel
Для System.Windows.Forms.PictureBox, существует событие MouseWheel:MouseEventHandler. В общем, описал обработчик и присоединил к...

Не вызывается событие paintEvent
Есть окно (не главное), в котором несколько виджетов, на виджетах рисуется графическая информация. В какой-то момент, информация...

Не вызывается событие FetchComplete...
Кто сталкивался помогите коннекчусь к MSSQL70 через ADO/OLEDB в отладчике все работает (событие recordset.FetchComplete вызывается), ...

Не вызывается событие onConfigurationChanged
Всем привет!!! Ну проблема я думаю уже ясна из темы. Разрабатываю приложение под Android 4.1 API 16. Не могу понять почему не вызывается...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru