예제 #1
0
        internal async Task StopThreadsAsync()
        {
            try
            {
                await Task.WhenAll(Threads.Select(thread => thread.StopAsync(TimeSpan.FromSeconds(5))).ToArray())
                .ConfigureAwait(false);
            }
            catch (AggregateException aggEx)
            {
                // An uncaught exception was likely thrown from the libuv event loop.
                // The original error that crashed one loop may have caused secondary errors in others.
                // Make sure that the stack trace of the original error is logged.
                foreach (var ex in aggEx.InnerExceptions)
                {
                    Log.LogCritical("Failed to gracefully close Kestrel.", ex);
                }

                throw;
            }

            Threads.Clear();
#if DEBUG && !INNER_LOOP
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
#endif
        }
예제 #2
0
        public void ReloadThreads()
        {
            if (_downloadTask != null && !_downloadTask.IsCompleted)
            {
                return;
            }

            Threads.Clear();
            ImageThreads.Clear();
            IsError   = false;
            IsLoading = true;

            Task <List <Models.Thread> > download = _board.GetThreadsAsync();

            _downloadTask = download.ContinueWith(task =>
            {
                if (task.IsFaulted)
                {
                    IsError   = true;
                    IsLoading = false;
                    return;
                }

                IEnumerable <ThreadViewModel> threads = task.Result
                                                        .Where(x => !x.IsSticky || CriticalSettingsManager.Current.ShowStickies)
                                                        .Select(x => new ThreadViewModel(x));

                Threads.AddRange(threads);
                ImageThreads.AddRange(threads);

                IsLoading = false;
            }, TaskContinuationOptions.ExecuteSynchronously);
        }
예제 #3
0
파일: Server.cs 프로젝트: dktlp/echo
        protected virtual void Dispose(bool disposing)
        {
            if (State == ServerState.Started)
            {
                Stop();
            }

            // Free managed resources
            if (disposing)
            {
                Threads?.Clear();
                Threads = null;

                Connections?.Clear();
                Connections = null;

                TcpDataQueue?.Clear();
                TcpDataQueue = null;

                ThreadCancellationToken?.Dispose();
                ThreadCancellationToken = null;

                TcpServer = null;
                SyncLock  = null;
            }
            // Free native resources here if there are any
        }
예제 #4
0
 public void Dispose()
 {
     foreach (var thread in Threads)
     {
         thread.Stop(TimeSpan.FromSeconds(2.5));
     }
     Threads.Clear();
 }
예제 #5
0
        public void JoinThreads()
        {
            ExitThreads = true;
            foreach (Thread t in Threads)
            {
                t.Join();
            }

            Threads.Clear();
        }
예제 #6
0
 public void ClearAll()
 {
     Operations.Clear();
     Processes.Clear();
     Organizations.Clear();
     Threads.Clear();
     Categories.Clear();
     Users.Clear();
     Levels.Clear();
     RequestIds.Clear();
 }
예제 #7
0
 public void StopRace()
 {
     if (!RaceIsOn)
     {
         throw new Exception("Гонка ещё не началась!");
     }
     foreach (Thread t in Threads)
     {
         t.Abort();
     }
     Threads.Clear();
     SetStartGrid();
     RaceIsOn = false;
 }
예제 #8
0
        private void SnifferDone()
        {
            FirstPages.Clear();
            //AllFirstPages.Clear();
            FirstPageCount     = 0;
            FirstPageDoneCount = 0;

            SnifferThreads.Clear();
            Threads.Clear();

            BackCallDelegate backCallDelegate = delegate()
            {
                dataGridView.Rows.Clear();
                messageLabel.Text = "已经停止......";
                return(null);
            };

            messageLabel.Invoke(backCallDelegate);
        }
예제 #9
0
        public void Setup(int threadCount, TableMap[] maps)
        {
            var th = Threads.ToArray();

            foreach (var workThread in th)
            {
                workThread.Stop();
            }
            Threads.Clear();

            _allMaps.Clear();
            _allMaps.AddRange(maps);
            _total    = maps.Length;
            _finished = 0;
            UpdateProcess();

            for (var i = 0; i < threadCount; i++)
            {
                Threads.Add(new WorkThread(GetNexTable, Report));
            }
        }