В своей программе, для упрощения кода, создал класс, куда запихнул все однотипные функции. Так вот, в этом классе есть свои объекты, у которых есть события. И мне необходимо передавать какую-то информацию, из этих событий в основную программу. Как с этим быть? Раньше просто всё было в основной программе и я использовал глобальные переменные, или вызывал функции в этих событиях. А когда всё это отдельно. Скорее всего, нужно создать событие в основной программе, которое я буду вызывать, когда будет вызываться событие в классе и передавать в основную программу во входных данных всю нужную информацию. Но как это реализовать в коде? Заранее спасибо.
Например :
publisherMove = new Publisher(conn, "p2mq://FORTS_SRV;category=FORTS_MSG;name=srvlinkMove;timeout=5000;scheme=|FILE|forts_messages.ini|message");
listenerSendMove = new Listener(conn, "p2mqreply://;ref=srvlinkMove");
listenerSendMove.Handler += new Listener.MessageHandler(ClientMessageCallbackMove);
public static int ClientMessageCallbackMove(Connection conn, Listener listener, Message msg)
{
try
{
if (msg.Type == MessageType.MsgData)
{
DataMessage replmsg = (DataMessage)msg;
//Здесь нужно передать в основную программу replmsg
Console.WriteLine(String.Format("Client received reply [id: {0}, data: {1}, user-id: {2}, name: {3}]", ((DataMessage)msg).MsgId, ((DataMessage)msg).Data, ((DataMessage)msg).UserId, ((DataMessage)msg).MsgName));
{
System.Console.WriteLine("client dump: {0}", msg);
}
}
else if (msg.Type == MessageType.MsgP2MQTimeout)
{
Console.WriteLine("Client reply TIMEOUT");
}
else
{
Console.WriteLine(String.Format("Message {0}", msg.Type));
}
return 0;
}
catch (CGateException e)
{
return (int)e.ErrCode;
}
}
Этот код в классе, мне не нужно полностью подписаться на это событие, мне нужно лишь от туда достать replmsg при его вызове.
Так, если listenerSendMove
- публичный объект, тогда возьмите и подпишитесь так же из вне вашего класса:
listenerSendMove.Handler += new Listener.MessageHandler(AnotherClientMessageCallbackMove);
public static void ClientMessageCallbackMove(Connection conn, Listener listener, Message msg)
{
DataMessage replmsg = (DataMessage)msg; //и делайте с ним что хотите
}
В чем проблема то я не пойму?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый деньС помощью automapper пытался проецировать функции разных типов моделей
Есть 10 внешних библиотек, которые я подключаю к своему классуМожно ли как-нибудь сделать, чтобы при компиляции у меня получился 1 общий dll
Есть служба windows, написанная на c#Сейчас при каждом изменении приходится останавливать службу на удаленном сервере, копировать руками все...
Есть двумерный массив чаровМне надо найти в этом массиве определенные получившиеся "слова" в процессе