Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 20.11.2012
Сообщений: 58

Ошибка с событиями(

01.06.2015, 15:30. Показов 595. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
имею такой класс
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
87
88
89
90
91
92
93
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
//using System.Threading.Tasks;
 
namespace TcpChatClient
{
    public class Clients
    {
        readonly Socket sock;
        public delegate void SocketAccepted();
        public event SocketAccepted SocketAccept;
        public delegate void ReceivedEvent(Clients cs, string received);
        public event ReceivedEvent Received = delegate { };
        public event EventHandler Connected = delegate { };
        public delegate void DisconnectedEvent(Clients cs);
        public event DisconnectedEvent Disconnected = delegate { };
        bool connected;
 
        public Clients()
        {
            sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
 
        public void Connect(string ip, int port)
        {
            try
            {
                var EndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
                sock.BeginConnect(EndPoint, ConnectCallback, sock);
            }
            catch 
            { 
            }
        }
 
        public void Close()
        {
            sock.Dispose();
            sock.Close();
        }
 
        public void ConnectCallback(IAsyncResult ar)
        {
            sock.EndConnect(ar);
            connected = true;
            Connected(this, EventArgs.Empty);
            var buf = new byte[sock.ReceiveBufferSize];
            sock.BeginReceive(buf, 0, buf.Length, SocketFlags.None, ReadCallback, buf);
        }
 
        public void ReadCallback(IAsyncResult ar)
        {
            var buf = (byte[]) ar.AsyncState;
            var rec = sock.EndReceive(ar);
            if (rec != 0)
            {
                var data = Encoding.Default.GetString(buf, 0, rec);
                    Received(this, data);
            }
            else
            {
                Disconnected(this);
                connected = false;
                Close();
                return;
            }
            sock.BeginReceive(buf, 0, buf.Length, SocketFlags.None, ReadCallback, buf);
        }
 
        public void Send(string data)
        {
            try
            {
                var buf = Encoding.Default.GetBytes(data);
                sock.BeginSend(buf, 0, buf.Length, SocketFlags.None, SendCallback, buf);
            }
            catch (Exception e)
            {
                string s = e.ToString();
                Disconnected(this); 
            }
        }
 
        void SendCallback(IAsyncResult ar)
        {
            sock.EndSend(ar);
        }
    }
}
на форме присваиваю событиям методы
C#
1
2
cs.Received += client_Received;
cs.Disconnected += Client_Disconnected;
в классе формы видно, что методы записаны.... когда идет выполнение проги, перескакиваем в первый класс...
и, к примеру, когда нахожусь в ReadCallback, видно, что методы есть у этих событий, а когда нахожусь в ReadCallback, ничего, пустота, показывает отладчик что ничего событиям не присвоено ничего.
Есть какие нибудь предположения в чем может быть ошибка?)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2015, 15:30
Ответы с готовыми решениями:

Работа с событиями
Добрый день, у меня есть задача, где условия, что пользователи могут подписываться на конкретных журналистов. Т.е есть класс пользователь и...

Работа с событиями
Добрый вечер! Парни помогите разобраться с поставленной задачей: Есть событие pictureBox1_Paint, в нем происходят некие действия..., но...

Действия с событиями
Известно, что события А, В и С составляют полную группу событий. Чему в таком случае равно выражение: А+АВ+АС+ВС+ВА+СА, где А — событие,...

1
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
01.06.2015, 16:31
Хм, а в чем тут проблема? Попробовал и так, и сяк вроде-работает как обычно, все нормально отображается и срабатывает..
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Runtime.Remoting.Messaging;
 
namespace WindowsFormsApplication50
{
    public partial class Form1 : Form
    {
        Clients cl = new Clients();
        public Form1()
        {
            InitializeComponent();
            cl.Disconnected += Disconnected;
            cl.TryConnectedEvent();
        }
        public void Disconnected(Clients cs)
        {
            MessageBox.Show("DISCONNECTED");
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            cl.ReadCallback(this.BeginInvoke(new Action(delegate { })));
        }
    }
}
 
 
 
    public class Clients
    {
        readonly Socket sock;
        public delegate void SocketAccepted();
        public event SocketAccepted SocketAccept;
        public delegate void ReceivedEvent(Clients cs, string received);
        public event ReceivedEvent Received = delegate { };
        public event EventHandler Connected = delegate { };
        public delegate void DisconnectedEvent(Clients cs);
        public event DisconnectedEvent Disconnected = delegate { };
        bool connected;
 
        public void TryConnectedEvent()
        {
            Disconnected(this);  
        }
        public Clients()
        {
            sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
 
        public void Connect(string ip, int port)
        {
            try
            {
                var EndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
                sock.BeginConnect(EndPoint, ConnectCallback, sock);
            }
            catch 
            { 
            }
        }
 
        public void Close()
        {
            sock.Dispose();
            sock.Close();
        }
 
        public void ConnectCallback(IAsyncResult ar)
        {
            sock.EndConnect(ar);
            connected = true;
            Connected(this, EventArgs.Empty);
            var buf = new byte[sock.ReceiveBufferSize];
            sock.BeginReceive(buf, 0, buf.Length, SocketFlags.None, ReadCallback, buf);
        }
 
        public void ReadCallback(IAsyncResult ar)
        {
            var buf = (byte[]) ar.AsyncState;
            var rec = 0;//sock.EndReceive(ar);
            if (rec != 0)
            {
                var data = Encoding.Default.GetString(buf, 0, rec);
                    Received(this, data);
            }
            else
            {
                Disconnected(this);
                connected = false;
                Close();
                return;
            }
            sock.BeginReceive(buf, 0, buf.Length, SocketFlags.None, ReadCallback, buf);
        }
 
        public void Send(string data)
        {
            try
            {
                var buf = Encoding.Default.GetBytes(data);
                sock.BeginSend(buf, 0, buf.Length, SocketFlags.None, SendCallback, buf);
            }
            catch (Exception e)
            {
                string s = e.ToString();
                Disconnected(this); 
            }
        }
 
        void SendCallback(IAsyncResult ar)
        {
            sock.EndSend(ar);
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2015, 16:31
Помогаю со студенческими работами здесь

Кнопка с событиями
Помогите пожалуйста сделать кнопку по нажатии которой буква начинает двигаться uses GraphAbc; var x,y:integer; ...

Запрос с событиями
Добрый день. Подскажите пожалуйста, что значит запрос где в одну строчку выстраивается цепочка событий? Например add request,...

Socket с событиями
Никто не находил простенькую, но адекватную обёртку для System.Net.Sockets ? чтобы событийный был, без мудаторий с потоками и...

Слежение за событиями
Как отключить слежение за событиями в WinXP, чтобы при просмотре с помощью eventvwr.msc было пусто.

Работа с COM-событиями
Здравствуйте! Не подскажете, пожалуйста, как работать с COM-событиями из powershell'а? Если конкретнее, то нужно реагировать на различные...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru