async void TheJob() { JobStatus = AnlagenStatus.läuft; TcpClient tcpClient = new TcpClient(); var ip = IPAddress.Parse(HEIZUNG); logger.Trace($"Connect {ip}"); await tcpClient.ConnectAsync(ip, 4001); var stream = tcpClient.GetStream(); using (var sr = new StreamReader(stream)) { while (JobStatus == AnlagenStatus.läuft) { var neueZeileLesen = sr.ReadLineAsync(); await neueZeileLesen.ContinueWith((t) => { var zeile = t.Result; if (!string.IsNullOrEmpty(zeile)) { context.Send((_) => NeueMeldung?.Invoke(this, zeile), null); logger.Trace(zeile); } }); } } tcpClient.Close(); }
public HSV22() { JobStatus = AnlagenStatus.gestoppt; task = new Task(() => TheJob()); context = SynchronizationContext.Current; logger.Trace("ctor"); }
public void Stop() { logger.Trace("Stop"); if (JobStatus == AnlagenStatus.läuft) { JobStatus = AnlagenStatus.stoppen; task.Wait(3000); JobStatus = AnlagenStatus.gestoppt; } }