Cancellation
ListenForStatus
OnStart
async
private void ListenForStatus(){ ... while (!_shutdownEvent.WaitOne(0)) { .... ProcessEventAsync(stringData); }}
ProcessEvent
Task.Delay
private async Task ProcessEventAsync(string Status){ ... await Task.Delay(TimeSpan.FromSeconds(30)); //Do something}
CancellationTokenSource
onStop()
ProcessEventAsync
ListenForStatus()
protected override void OnStart(string[] args) { ... worker = new Thread(ListenForStatus); worker.Start(); } private void ListenForStatus() { ... client = new TcpClient(); client.Connect(new IPEndPoint(IPAddress.Parse(IPADDR), PORT)); using (NetworkStream stream = client.GetStream()) { int numBytesRead = stream.Read(data, 0, data.Length); if (numBytesRead > 0) { ... ProcessEventAsync(stringData); } } } private async Task ProcessEventAsync(string Status) { await Task.Delay(TimeSpan.FromSeconds(30)); // Do something }