// 서버 수신메서드 public async Task Read() { if (!netStream.CanRead) { return; } try { StreamReader reader = new StreamReader(netStream); string[] msg = (await reader.ReadLineAsync()).Split(','); if (msg.Length > 1) { FormCollection frms = Application.OpenForms; for (int i = 0; i < frms.Count; i++) { if (frms[i] == null) { continue; } if (frms[i] is PopMain) { PopMain pop = (PopMain)frms[i]; // 해당 POP의 라인아이디와 같은 경우 if (pop.WorkerInfo.LineID == Convert.ToInt32(msg[0])) { //respone 형태 (실시간모니터인지 아닌지(0), 라인아이디(1),메세지(2),생산실적아이디(3),완료여부(4),총 투입수량(5)) ReceiveEventArgs e = new ReceiveEventArgs(); if (msg.Length == 5) { e.LineID = int.Parse(msg[0]); e.Message = msg[1]; e.PerformanceID = msg[2]; e.IsCompleted = bool.Parse(msg[3]); e.QtyImport = int.Parse(msg[4]); } else if (msg.Length == 3) { e.LineID = int.Parse(msg[0]); e.Message = msg[1]; e.IsCompleted = bool.Parse(msg[2]); } if (e.Message != null) { Debug.WriteLine(msg[0]); if (Received != null) { Received?.Invoke(this, e); } } } } } } } catch (Exception ex) { WriteLog(ex); ErrorMessage(ex); } }
public void Receive(object sender, ReceiveEventArgs e) { Task.Factory.StartNew(ReceiveMessage, e).Wait(); }