public async Task <bool> BeginEvaluationAsync(IReadOnlyList <IRContext> contexts, IRExpressionEvaluator evaluator, CancellationToken hostCancellationToken) { var evaluation = new RSessionEvaluation(contexts, evaluator, hostCancellationToken); if (_tcs.TrySetResult(evaluation)) { await evaluation.Task; } return(evaluation.IsMutating); }
public void TrySetResult() { var tcs = new TaskCompletionSourceEx<int>(); var count = 0; ParallelTools.Invoke(8, i => { var isSet = tcs.TrySetResult(i); if (isSet) { Interlocked.Increment(ref count); } }); count.Should().Be(1); }
public void TrySetResult() { var tcs = new TaskCompletionSourceEx <int>(); var count = 0; ParallelTools.Invoke(8, i => { var isSet = tcs.TrySetResult(i); if (isSet) { Interlocked.Increment(ref count); } }); count.Should().Be(1); }
public void Request(IReadOnlyList <IRContext> contexts, string prompt, int maxLength, TaskCompletionSource <string> requestTcs) { var request = new RSessionInteraction(requestTcs, _responseTcs.Task, prompt, maxLength, contexts ?? new[] { RHost.TopLevelContext }); if (_createRequestTcs.TrySetResult(request)) { return; } request.Dispose(); if (CreateRequestTask.IsCanceled) { throw new OperationCanceledException(); } }
private void SetResult(object state) => _tcs.TrySetResult((T)state);
public void Dispose() { _hostCancellationRegistration.Dispose(); _tcs.TrySetResult(null); }