public Form1() { InitializeComponent(); lblStatus.Text = string.Empty; // The second parameter in the Func is the return value //Func<AppCommon.UPayload, int> FunctionPTR = StartFecthAck; m_callbackFunctions = new Dictionary <AppCommon.UDP_MESSAGE_CODES, Func <byte [], int, int> >(); m_callbackFunctions.Add(AppCommon.UDP_MESSAGE_CODES.START_FECTH_ACK, StartFecthAck); m_callbackFunctions.Add(AppCommon.UDP_MESSAGE_CODES.SET_SIGNAL_ID, SetSignalId); try { UDPServer.UdbMsgCallback p = new UDPServer.UdbMsgCallback(MsgCallback); m_server = new UDPServer(p, 3001); m_server.Connect(); m_server.Start(0x8888); m_udpClient = new UdpIpcControl(0x5555); m_udpClient.Connect(2001); lblStatus.Text = "Start listening"; lblDate.Text = string.Empty; Control.CheckForIllegalCrossThreadCalls = false; } catch (Exception err) { lblStatus.Text = err.Message; } }