Microsoft.R.Host.Client.RHost.CancelAllAsync C# (CSharp) Method

CancelAllAsync() public method

Cancels any ongoing evaluations or interaction processing.
public CancelAllAsync ( CancellationToken cancellationToken = default(CancellationToken) ) : Task
cancellationToken System.Threading.CancellationToken
return Task
        public async Task CancelAllAsync(CancellationToken cancellationToken = default(CancellationToken)) {
            if (_runTask == null) {
                // Nothing to cancel.
                return;
            }

            await TaskUtilities.SwitchToBackgroundThread();

            var tcs = new TaskCompletionSource<object>();
            if (Interlocked.CompareExchange(ref _cancelAllTcs, tcs, null) != null) {
                // Cancellation is already in progress - do nothing.
                return;
            }

            using (tcs.RegisterForCancellation(_cts.Token))
            using (tcs.RegisterForCancellation(cancellationToken)) {
                try {
                    // Cancel any pending callbacks
                    _cancelAllCts.Cancel();
                    var cts = CancellationTokenSource.CreateLinkedTokenSource(_cts.Token, cancellationToken);
                    try {
                        await NotifyAsync("!//", cts.Token);
                    } catch (OperationCanceledException) {
                        return;
                    } catch (MessageTransportException) {
                        return;
                    } finally {
                        cts.Dispose();
                    }

                    await tcs.Task;
                } finally {
                    Volatile.Write(ref _cancelAllTcs, null);
                }
            }
        }