在我的程序中,为了简化代码,我创建了一个类,其中填充了相同类型的所有函数。所以,这个类有它自己的有事件的对象。我需要将一些信息从这些事件传输到主程序。如何处理?以前,一切都在主程序中,我使用全局变量,或者在这些事件中调用函数。当这一切都是分开的。最有可能的是,您需要在主程序中创建一个事件,当调用类中的事件时我将调用该事件,并将所有必要的信息传递给输入数据中的主程序。但是如何在代码中实现呢?提前致谢。
例如 :
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
是一个公共对象,那么从你的类之外以同样的方式获取和订阅:我不明白的问题是什么?