У меня есть приложение ac # windows form, которое я скинул вместе.Это довольно просто: \
входные данные:
- текстовая строка
- путь к исходной папке
- путь к целевой папке
- целое число
Приложение ищет введенные текстовые строки в текстовых файлах в исходной папке;если он находит строку, он копирует этот файл и файл изображения с тем же именем в папку назначения.Однако это происходит много раз на основе целочисленного ввода.
Итак, у меня есть кнопка, и в событии нажатия кнопки я вызываю
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, чтобы он обновлял пользовательский интерфейс во время его работы.
Я просмотрел примеры, но на самом деле не следую им.У меня нет процентного значения завершения, я просто хочу обновить. Текст изменяет каждую итерацию и отображает ее.Я даже не думаю, что мне обязательно нужно помещать фактическое действие копирования в разные потоки, просто кажется, что его нужно запускать отдельно от основного потока пользовательского интерфейса.Может быть, я слишком усложняю это ... может кто-то подтолкнет меня в правильном направлении?Спасибо!