private void StopFlush() { lock (FlushTaskCancelationToken) { if (FlushTaskCancelationToken.IsCancellationRequested) { return; } FlushTaskCancelationToken.Cancel(); } if (isFlushRunning) { StoppedFlushHandle.WaitOne(); } PendingScripts.Dispose(); FlushTaskCancelationToken.Dispose(); }
private void FlushScripts() { OwnerWebView.ExecuteWithAsyncErrorHandling(() => { try { isFlushRunning = true; while (!FlushTaskCancelationToken.IsCancellationRequested) { InnerFlushScripts(); } } catch (OperationCanceledException) { // stop } finally { isFlushRunning = false; StoppedFlushHandle.Set(); } }); }
private void StopFlush() { lock (FlushTaskCancelationToken) { if (FlushTaskCancelationToken.IsCancellationRequested) { return; } FlushTaskCancelationToken.Cancel(); } if (isFlushRunning) { StoppedFlushHandle.WaitOne(); } // signal any pending js evaluations foreach (var pendingScript in PendingScripts.ToArray()) { pendingScript.WaitHandle?.Set(); } PendingScripts.Dispose(); FlushTaskCancelationToken.Dispose(); }