private void UpdateStatus(object data) { SortBF sort = data as SortBF; string status = ""; string status_iter = ""; while (true) { if (sort.GetStatus() != status) { status = sort.GetStatus(); Application.Current.Dispatcher.Invoke( new Action(() => { TextBlock_status.Text = status; })); } if (sort.GetStatus_Iter() != status_iter) { status_iter = sort.GetStatus_Iter(); Application.Current.Dispatcher.Invoke( new Action(() => { TextBlock_statusiter.Text = status_iter; })); } if (status == "Завершено.") { break; } Thread.Sleep(50); } }
private void Button_Click_4(object sender, RoutedEventArgs e) { Updater = new Thread(UpdateStatus); mergeSort = new Thread(StartSort); if (FirstSortFile.Text == "") { MessageBox.Show("Адрес первого файла не указан!"); return; } int parseMaxLine = 0; if (!int.TryParse(maxLine.Text, out parseMaxLine) || (parseMaxLine < 8 || parseMaxLine > 200000)) { MessageBox.Show("В стркоке некорректное целое число/не число/выход за допустимый диапазон!"); return; } if (FirstSortFile.Text == "") { MessageBox.Show("Адрес второго файла не указан!"); return; } if (NewFile.Text == "") { MessageBox.Show("Адрес второго файла не указан!"); return; } SortBF sortBF = new SortBF(FirstSortFile.Text, SecondSortFile.Text, NewFile.Text, parseMaxLine); Updater.Start(sortBF); mergeSort.Start(sortBF); }
private void StartSort(object data) { SortBF sort = data as SortBF; sort.Sort(); }