private void stopScript_Click(object sender, RoutedEventArgs e)
        {
            var script            = this.DataContext as Script;
            var newStopProcessing = new StopProcessing();

            script.AddBeforeSelected(newStopProcessing);
            this.Close();
        }
        private async Task <bool> StopProcessing(StopProcessing msg)
        {
            if (_cws != null)
            {
                if (_cws.State == WebSocketState.Open)
                {
                    var cancellationTokenSource = new CancellationTokenSource(msg.ConnectionTimeout);
                    await _cws.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, cancellationTokenSource.Token);
                }
                _cws.Dispose();
                _cws            = null;
                _recvBuffer     = null;
                _receiveSegment = null;
            }

            return(true);
        }
示例#3
0
        internal static void StartMessageLoop()
        {
            if (MessageLoopRunning)
            {
                ABSLog.ThrowError("An attempt to made to start a message loop while one was already running!");
            }
            MessageLoopRunning = true;

            Task.Run(async() =>
            {
                while (true)
                {
                    // Run immediate processes.
                    while (ImmediateProcesses.TryPeek(out Process immediateProcess))
                    {
                        immediateProcess.ProcessIsRunning = true;
                        await immediateProcess.ExecuteAsync();
                        ImmediateProcesses.TryDequeue(out _);
                    }

                    // Run background processes.
                    if (BackgroundProcesses.TryPeek(out Process backgroundProcess))
                    {
                        backgroundProcess.ProcessIsRunning = true;
                        await backgroundProcess.ExecuteAsync();
                        BackgroundProcesses.TryDequeue(out _);
                    }
                    else
                    {
                        StopProcessing?.Invoke(null, null);

                        waitForNext.Wait();

                        if (!MessageLoopRunning)
                        {
                            return;
                        }

                        waitForNext.Reset();

                        StartProcessing?.Invoke(null, null);
                    }
                }
            });
        }
 public AbortOnAllFailureReceiveTxnBatch(IBTTransportProxy transportProxy, ControlledTermination control, CommittableTransaction transaction, ManualResetEvent orderedEvent, StopProcessing stopProcessing) : base(transportProxy, control, transaction, orderedEvent, false)
 {
     _stopProcessing = stopProcessing;
 }