У меня есть приложение с окнами windows С#, которое я сбрасывал вместе. Это довольно просто:\
входы:
- текстовая строка
- путь к исходной папке
- путь к папке назначения
- целочисленный счет
Приложение ищет текстовые файлы в исходной папке для введенной текстовой строки; если он найдет строку, он копирует этот файл и файл с тем же именем в папку назначения. Он делает это, однако, много раз на основе целочисленного ввода.
Итак, у меня есть кнопка, и в событии нажатия кнопки я вызываю
ProcessImages(tbDID.Text, tbSource.Text, tbDest.Text, comboBoxNumberImages.SelectedItem.ToString());
который:
private void ProcessImages(string DID, string SourceFolder, string DestFolder, string strNumImages)
{
int ImageCounter = 0;
int MaxImages = Convert.ToInt32(strNumImages);
DirectoryInfo di = new DirectoryInfo(SourceFolder);
foreach (FileInfo fi in di.GetFiles("*.txt"))
{
if (fi.OpenText().ReadToEnd().Contains(DID))
{
//found one!
FileInfo fi2 = new FileInfo(fi.FullName.Replace(".txt", ".tif"));
if (fi2.Exists)
{
try
{
tbOutput.Text += "Copying " + fi2.FullName + " to " + tbDest.Text + "\r\n";
fi2.CopyTo(tbDest.Text + @"\" + fi2.Name, true);
tbOutput.Text += "Copying " + fi.FullName + " to " + tbDest.Text + "\r\n";
fi.CopyTo(tbDest.Text + @"\" + fi.Name, true);
ImageCounter++;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
if (ImageCounter >= MaxImages)
break;
}
}
Что происходит, так это то, что процесс выполняется нормально, но я хочу обновить текстовое поле в форме с прогрессом при копировании файлов. В основном форма затухает во время ее запуска, а после ее завершения вывод находится в текстовом поле. Я хотел бы реализовать BackgroundWorker, чтобы он обновил интерфейс во время его работы.
Я просмотрел примеры, но я действительно не слежу за ними. У меня нет процентного значения, я просто хочу обновить .Text изменяет каждую итерацию и отображает ее. Я даже не думаю, что мне обязательно нужно поставить фактическое действие копирования в разных потоках, просто звучит так, что нужно запускать отдельно от основного потока пользовательского интерфейса. Может быть, я слишком усложняю это... может кто-то подтолкнет меня в правильном направлении? Спасибо!