Esempio n. 1
0
        private async void Scan()
        {
            FilterColumns.Clear();

            if (!ValidateIpRanges())
            {
                return;
            }

            if (AppStats.ApplicationState == AppState.Supervising)
            {
                RequestStop();
            }

            await Task.Run(() =>
            {
                while (AppStats.CurrentlyRunningThreadsCount > 0) // to avoid concurency when manual rescan invoked TODO: develop some better solution
                {
                    Thread.Sleep(100);
                }

                if (_currentTaskIsFinishedEvent.WaitOne())
                {
                    if (AppStats.ApplicationState != AppState.Chilling &&
                        AppStats.ApplicationState != AppState.Supervising)
                    {
                        _currentTaskIsFinishedEvent.Set();
                        return;
                    }

                    ScanningProcessStarted?.Invoke();

                    ResetScannedNodesCount();

                    AppStats.ApplicationState = AppState.Scaning;

                    Application.Current.Dispatcher.Invoke(() => GridSource.Clear());

                    GenerateRowsFromIpRangesAndArangeScanTasks();

                    CreateFileterColumnsList();

                    var requiredThreadsCount = (byte)Math.Min(GridSource.Count, Config.MaxThreads);

                    var multiTask       = new MultiThreadedTask(requiredThreadsCount);
                    multiTask.Finished += MultiTask_Finished;

                    multiTask.Begin(ScanProc);
                }
            });
        }
Esempio n. 2
0
        private void CreateFileterColumnsList()
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                FilterColumns.Clear();
                FilterColumns.Add(new SelectableObject <string>("<all>"));

                foreach (var remoteParameter in Config.UserQuerySet)
                {
                    if (RemoteParametersTypes[remoteParameter] == typeof(string))
                    {
                        FilterColumns.Add(new SelectableObject <string>(remoteParameter));
                    }
                }
            });
        }