Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
tigre

C# вызов class через события

16.09.2010, 19:31. Показов 2033. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Xml;
using System.IO;
 
namespace TradeRobotForms
{
   public class TXmlConnector
   {
       const String EX_SETTING_CALLBACK = "Не смог установить функцию обратного вызова";
 
       private static volatile TXmlConnector _instance;
       private static object syncRoot = new Object();
 
       public delegate void CallBack(IntPtr pData);
       public CallBack myDelegate;
 
       private TXmlConnector()
       {
           myDelegate = new CallBack(myCallBack);
           if (!SetCallback(myDelegate))
           {
               throw (new Exception(EX_SETTING_CALLBACK));
           }
       }
 
       public static TXmlConnector Instance
       {
           get
           {
               if (_instance == null)
               {
                   lock (syncRoot)
                   {
                       if (_instance == null)
                           _instance = new TXmlConnector();
                   }
               }
 
               return _instance;
           }
       }
 
       public void myCallBack(IntPtr pData)
       {
           String data = MarshalUTF8.PtrToStringUTF8(pData);
           FreeMemory(pData);
 
           RaiseNewDataEvent(data);
       }
 
       public class NewDataEventArgs : EventArgs
       {
           private String _data;
           public NewDataEventArgs(String data)
           {
               _data = data;
           }
           public String data
           {
               get
               {
                   return _data;
               }
           }
       }
 
       public event EventHandler<NewDataEventArgs> NewData;
       public void RaiseNewDataEvent(String data)
       {
           EventHandler<NewDataEventArgs> handler = NewData;
 
           if (handler != null)
           {
               handler(new Object(), new NewDataEventArgs(data));
           }
       }
 
 
       public String SendCommand(String command)
       {
 
           IntPtr pData = MarshalUTF8.StringToHGlobalUTF8(command);
           IntPtr pResult = SendCommand(pData);
 
           String result = MarshalUTF8.PtrToStringUTF8(pResult);
 
           Marshal.FreeHGlobal(pData);
           FreeMemory(pResult);
 
           return result;
 
       }
 
       [DllImport("TXmlConnector.dll")]
       private static extern bool SetCallback(CallBack pCallback);
 
       [DllImport("TXmlConnector.dll")]
       private static extern IntPtr SendCommand(IntPtr pData);
 
       [DllImport("TXmlConnector.dll")]
       private static extern bool FreeMemory(IntPtr pData);
 
   }
}
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
using System;
using System.Text;
using System.Runtime.InteropServices;
 
namespace TradeRobotForms
{
   static class MarshalUTF8
   {
       private static UTF8Encoding _utf8;
 
       static MarshalUTF8()
       {
           _utf8 = new UTF8Encoding();
       }
 
       public static IntPtr StringToHGlobalUTF8(String data)
       {
           Byte[] dataEncoded = _utf8.GetBytes(data);
 
           int size = Marshal.SizeOf(dataEncoded[0]) * dataEncoded.Length;
 
           IntPtr pData = Marshal.AllocHGlobal(size);
 
           Marshal.Copy(dataEncoded, 0, pData, dataEncoded.Length);
 
           return pData;
       }
 
       public static String PtrToStringUTF8(IntPtr pData)
       {
           // this is just to get buffer length in bytes
           String errStr = Marshal.PtrToStringAnsi(pData);
           int length = errStr.Length;
 
           Byte[] data = new byte[length];
           Marshal.Copy(pData, data, 0, length);
 
           return _utf8.GetString(data);
       }
   }
}
я не очень понимаю как это вызов через NewData события.

т.е мои позная только как создать обьект через new но там так не получется стоит privat на коструктор но значит должен быть другой спосб воспльзоватся class TXmlConnector.

Добавлено через 21 минуту
"Эти классы только взаимодействуют с библиотекой, генерировать комманды и обрабатывать ответы надо самому, свой код не привожу, слишком много текста и думаю это дело каждого как генерить запросы. Полученная информация от библиотеки пересылается в событии NewData, надо его обрабатывать."

смысол в том что автор этих классов говрит "Полученная информация от библиотеки пересылается в событии NewData" а я не умею через события class вызвать
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2010, 19:31
Ответы с готовыми решениями:

Вызов события hover через код
Здравствуйте, прошу помочь с решением проблемы, с которой бьюсь последние пару дней. Пишу расширение для хрома, сейчас застрял на...

Вызов процедуры по таймеру. (Через н-ное время, после какого-то события)
Народ, привет! На форме есть текстбокс, при вводе символов, в который меняется Recordset для ListBox'a ну и соответственно в ListBox...

Вызов события из другого события по нажатию клавиши
Всем привет! Есть кнопка на Windows.Forms, к ней привязано событие. Хочется, чтобы еще и по нажатию Enter эта кнопка срабатывала...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2010, 19:31
Помогаю со студенческими работами здесь

Вызов события из другого события
Есть событие button4_Click, надо из него вызвать button3_Click. Как сделать?

Вызов public class Class1<T>
Привет Подскажите как вызывать class Class1&lt;T&gt; в powershell Пробовал вызывать так ::sLj но это не работает

Дружественные функции, реализация и вызов: Friend used outside of class
Подскажите, пожалуйста, как превратить этот метод вычисления боковой поверхности в дружественную функцию: long double...

Вызов события
Здравствуйте! Не могу вызвать событие treeView1_AfterSelect_1(System::Object^ sender, System::Windows::Forms::TreeViewEventArgs^ e) ...

Вызов события в С#
Как вызвать(и выполнить) событие контрола(он не имеет фокуса)? :confused: btnStart.Click += new EventHandler(btnStart_Click);событие не...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере 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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru