private async Task checkLoop() { if (await checkFile(_checkMode).ConfigureAwait(false)) #endif { onChanged(); return; } while (true) { #if NET40 var timeout = _are.AsTask(_delay).Result; #else var timeout = await _are.AsTask(_delay).ConfigureAwait(false); #endif lock (_sync) if (_disposed) { return; } #if NET40 if (checkFile(timeout ? CheckMode.None : _checkMode)) #else if (await checkFile(timeout ? CheckMode.None : _checkMode).ConfigureAwait(false)) #endif { onChanged(); return; } } }
public async Task SendMsg(Msg msg) { if (msg.Data == null) { throw new ArgumentException(); } int len = msg.Data.tlen; if (Interlocked.Add(ref sendingWindow, -len) < 0) { do { await sendingWindowEvent.AsTask(); } while (sendingWindow < 0); } var seqMsg = new SeqMsg() { Msg = msg, Len = len, Seq = SentPacketsCount++ }; unackedPackets.Enqueue(seqMsg); await WaitBaseStream(); bool ok = false; try { await BaseStream.SendMsg(new BytesView(new byte[] { (byte)Opcode.Data }) { nextNode = msg.Data }); ok = true; } catch (Exception) { } }
public async Task HostReconfigWatchdog(CancellationToken cancel) { while (!cancel.IsCancellationRequested) { try { var awaitInterval = _configOptions.CurrentValue.CheckAliveInterval; await SyncConfig(cancel); await Task.WhenAny(Task.Delay(awaitInterval, cancel), _triggerReloadConfig.AsTask()); _triggerReloadConfig.Reset(); } catch (TaskCanceledException) { break; } } }