/// <summary> /// Accept this stream /// </summary> /// <param name="ct"></param> /// <returns></returns> public Task <IMessageStream> OpenAsync(CancellationToken ct) { ct.Register(() => { Tcs.TrySetCanceled(); }); return(Tcs.Task); }
private void Cancel() { IsBusy = false; if (Tcs != null) { Tcs.TrySetCanceled(); Tcs = null; } }
public async Task <object> GetTask(CancellationToken cancellationToken) { try { if (cancellationToken == default) { return(await Tcs.Task); } await using (cancellationToken.Register(() => Tcs.TrySetCanceled())) { return(await Tcs.Task); } } catch { _onTimeout?.Invoke(); throw new TimeoutException("Request didn't receive any Response within the expected time."); } }
private void CancelTcs(object state) { CancellationToken ct = (CancellationToken)state; Tcs?.TrySetCanceled(ct); }