private void ButtonSend_Click(object sender, EventArgs e) { var toId = (string)lblModel.Tag; toId = (toId == "ALL") ? string.Empty : toId; imcp = new IMCommParamMessage() { msgType = msgType.Text, fromConnId = imModel.ConnId, toConnId = toId, message = TextBoxMessage.Text, isSuccess = true }; HubProxy.Invoke("SendMessage", JsonConvert.SerializeObject(imcp)); TextBoxMessage.Text = String.Empty; TextBoxMessage.Focus(); }
private void doMessage(string data) { dynamic imcpData; imcp = JsonConvert.DeserializeObject <IMCommParamBase>(data); switch (imcp.msgType) { case msgType.Text: imcpData = JsonConvert.DeserializeObject <IMCommParamMessage>(data); var immodel = Services.Union(Clients).First(f => f.ConnId == imcp.fromConnId); this.Invoke((Action)(() => { RichTextBoxConsole.AppendText(String.Format("{0} - {1}:\n {2}" + Environment.NewLine, immodel.isService ? "Service" : "Client", immodel.Name, imcpData.message)); })); break; case msgType.LineState: imcpData = JsonConvert.DeserializeObject <IMCommParamLineState>(data); if (imcp.isSuccess) { if (imcpData.Count > 0) //中断确定类型是否为List<T> { foreach (var d in (List <IMCommModel>)imcpData.IMModels) { if (d.isService) { if (!Services.Exists(e => e.ConnId == d.ConnId)) { Services.Add(d); treeViewFlush(treeView1, imcp.isSuccess, d); } } else { if (!Clients.Exists(e => e.ConnId == d.ConnId)) { Clients.Add(d); treeViewFlush(treeView2, imcp.isSuccess, d); } } } } else { var cm = (IMCommModel)imcpData.IMModel; if (cm == null) { return; } if (cm.isService) { if (!Services.Exists(e => e.ConnId == cm.ConnId)) { Services.Add(cm); treeViewFlush(treeView1, imcp.isSuccess, cm); } } else { if (!Clients.Exists(e => e.ConnId == cm.ConnId)) { Clients.Add(cm); treeViewFlush(treeView2, imcp.isSuccess, cm); } } } } else { var cm = (IMCommModel)imcpData.IMModel; if (cm == null) { return; } if (cm.isService) { Services.Remove(Services.First(f => f.ConnId == imcp.fromConnId)); treeViewFlush(treeView1, imcp.isSuccess, cm); } else { Clients.Remove(Clients.First(f => f.ConnId == imcp.fromConnId)); treeViewFlush(treeView2, imcp.isSuccess, cm); } } break; case msgType.Command: //反射 break; } }