protected virtual void OnPushMessageReceived(PushMessageReceivedEventArgs e) { PushMessageReceivedDelegate handler = PushMessageReceived; if (handler != null) { foreach (PushMessageReceivedDelegate singleCast in handler.GetInvocationList()) { ISynchronizeInvoke syncInvoke = singleCast.Target as ISynchronizeInvoke; if ((syncInvoke != null) && (syncInvoke.InvokeRequired)) { syncInvoke.Invoke(singleCast, new object[] { this, e }); } else { singleCast(this, e); } } } }
public async void ManagePushMessagesAsync() { await Task.Run(() => { bool ConnectionBroken = false; try { while (_ClientRunning) { PushMessage pushMessage = SocketHelper.ReceiveObject(_SocketClient) as PushMessage; if (pushMessage == null) { // Connection has been broken _ClientRunning = false; ConnectionBroken = true; break; } PushMessageReceivedEventArgs e = new PushMessageReceivedEventArgs(pushMessage); OnPushMessageReceived(e); } } catch (ObjectDisposedException) { ConnectionBroken = true; System.Diagnostics.Trace.WriteLine("The socket has been closed."); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } if (ConnectionBroken) { EventArgs OnConnectionClosedEA = new EventArgs(); OnConnectionClosed(OnConnectionClosedEA); } }); }
private static void _PushClient_PushMessageReceived(object sender, PushMessageReceivedEventArgs e) { Console.WriteLine("Received message: " + e.PushMessage.Message); }