public PresenterAddressChecking( ICheckManager checkManager, IResultsTableProvider resultsTableProvider, ICheckingControlPanel checkingControlPanel, ITasksStatusIndicator tasksStatusIndicator ) { // проверка адресов checkingControlPanel.IsRun_Changed += async() => { if (checkingControlPanel.IsRun) { // подготовка к проверке tasksStatusIndicator.TasksCompleted = 0; foreach (CheckRow item in resultsTableProvider.CheckRows) { item.ResultPing = StatusChecking.nostarted; item.ResultGet = StatusChecking.nostarted; } // сама проверка await checkManager.RunCheckingAsync( resultsTableProvider.CheckRows, tasksStatusIndicator.Progress ); // постготовка checkingControlPanel.IsRun = false; } else { checkManager.CancelCheckingAsync(); } }; // При вставке нового списака в эту форму обнуляем индикатор задач. resultsTableProvider.CheckRowsChanged += () => { tasksStatusIndicator.TasksCompleted = 0; tasksStatusIndicator.TasksTotalCount = resultsTableProvider.CheckRows.Count(); }; }
// Осуществляет переключение страниц public PresenterPageSwitcher( IViewerPages viewerPages, ICallerStepChecking callerStepChecking, IAddressTableProvider addressTableProvider, ICallerStepEditing callerStepEditing, IResultsTableProvider resultsTableProvider ) { callerStepChecking.StepAddressChecking_required += () => { var bindingList = addressTableProvider.Addresses.Select( item => new CheckRow() { Host = item.Host, ResultPing = StatusChecking.nostarted, Uri = item.Uri, ResultGet = StatusChecking.nostarted }).ToList(); resultsTableProvider.CheckRows = new BindingList <CheckRow>(bindingList); viewerPages.Show_PageAddressChecking(); }; callerStepEditing.StepEditing_required += viewerPages.Show_PageAddressEditing; }