public void ConnectAsync(Uri uri, System.Threading.CancellationToken cancel) { Task.Run(() => { try { ws.ConnectAsync(uri, cancel); if (ws.State == WebSocketState.Open) { MessageEventArg arg = new MessageEventArg(); arg.message = "Connection Established"; OnConnect(this, arg); RecieveAsync(cancel); } } catch (WebSocketException ex) { ErrorEventArg arg = new ErrorEventArg(); arg.time = DateTime.Now; arg.socketState = ws.State; arg.socketException = ex; OnError(this, arg); } }, cancel); }
void callback3(object sender, MessageEventArg e) { Thread.Sleep(2000); Invoke((MethodInvoker)delegate { richTextBox1.Text += e.Message + "\n"; }); }
private async void RecieveAsync(System.Threading.CancellationToken cancel) { try { ArraySegment <byte> buffer = new ArraySegment <byte>(new byte[10000]); WebSocketReceiveResult result = await ws.ReceiveAsync(buffer, cancel); if (ws.State == WebSocketState.CloseReceived) { MessageEventArg arg = new MessageEventArg(); arg.time = DateTime.Now; if (ws.CloseStatusDescription != "") { arg.message = ws.CloseStatusDescription; } else { arg.message = "Websocket closed"; } OnClose(this, arg); } else { MessageEventArg arg = new MessageEventArg(); if (result.Count != 0 || result.CloseStatus == WebSocketCloseStatus.Empty) { arg.time = DateTime.Now; string message = Encoding.ASCII.GetString(buffer.Array, buffer.Offset, result.Count); arg.message = message; OnReceive(this, arg); RecieveAsync(cancel); } } } catch (WebSocketException ex) { ErrorEventArg arg = new ErrorEventArg(); arg.time = DateTime.Now; arg.socketState = ws.State; arg.socketException = ex; OnError(this, arg); } }
private void OnTcpConnection_MessageReceived(object sender, MessageEventArg e) { //filter out all none jpg messages if (!(e.Message is JpgMessage)) { return; } //enqueue image into opponent video queue JpgMessage msg = e.Message as JpgMessage; //extract images Image image = msg.GetImage(); m_taskManager.EnqueueOpponent(image); msg.DisposeImage(); //asyn invalidation this.Invalidate(); }
protected void OnOperationFinished(MessageEventArg e) { //##### Method1 - Event raised on the same thread ##### //EventHandler<MessageEventArg> handler = OperationFinished; //if (handler != null) //{ // handler(this, e); //} //##### Method2 - Event raised on (the same) separate thread for all listener ##### //EventHandler<MessageEventArg> handler = OperationFinished; //if (handler != null) //{ // Task.Factory.StartNew(() => handler(this, e)); //} //##### Method3 - Event raised on different threads for each listener ##### if (OperationFinished != null) { foreach (EventHandler<MessageEventArg> handler in OperationFinished.GetInvocationList()) { Task.Factory.FromAsync((asyncCallback, @object) => handler.BeginInvoke(this, e, asyncCallback, @object), handler.EndInvoke, null); } } }
private void _reader_ReadMessageCompleted(object sender, MessageEventArg e, UInt32 dataId, Func<int, IConsumerBinding> update, int length) { Assert.AreEqual<uint>(dataId, e.DataSetId); // return; e.MessageContent.UpdateMyValues(update, length); }
private void _reader_ReadMessageCompleted(object sender, MessageEventArg e, UInt32 dataId, Func <int, IConsumerBinding> update, int length) { Assert.AreEqual <uint>(dataId, e.DataSetId); // return; e.MessageContent.UpdateMyValues(update, length); }