Привет все,
В настоящее время я разрабатываю свою первую программу WPF (базовый c инструмент для автоматического перемещения файлов в структурированные пути к папкам) в C#, и это практически завершенный". Но я столкнулся с проблемой. Мой пользовательский интерфейс состоит из трех разных вкладок, которые отображают домашнюю страницу (с пользовательскими элементами управления), страницу журнала и страницу о программе. Когда я включаю автопрокрутку в текстовом поле журнала, пользовательский интерфейс останавливается, когда я переключаюсь на вкладку журнала. Программа выводит в журнал с помощью c textboxoutputter.
Код для включения автопрокрутки состоит из:
TXTBX_Log Xaml:
<TextBox x:Name="TXTBX_Log" Grid.Column="1" Grid.ColumnSpan="7" Grid.Row="1" Grid.RowSpan="7" Background="#FF3F3F46" Foreground="White" VerticalContentAlignment="Bottom" IsReadOnly="True" TextChanged="ScrollToEnd" />
Событие TXTBX_Log TextChanged:
private void ScrollToEnd(object sender, TextChangedEventArgs e)
{
TXTBX_Log.ScrollToEnd();
}
Пользовательский интерфейс выглядит следующим образом:
UI
Я запускаю фонового работника, когда пользователь нажимает кнопку запуска. Идея состоит в том, что после того, как пользователь нажмет start, он / она может переключиться на вкладку журнала, чтобы следить за тем, что делает программа. Код, который я использовал для выполнения sh, вставлен ниже:
Кнопка запуска , fullAutomation установлена в TRUE:
private void BTN_Start_Click(object sender, RoutedEventArgs e)
{
Console.WriteLine("Opdracht wordt uitgevoerd");
if (fullAutomation == false)
{
archivingWorker = new BackgroundWorker();
archivingWorker.DoWork += ArchivingWorker_DoWork;
archivingWorker.RunWorkerCompleted += ArchivingWorker_RunWorkerCompleted;
archivingWorker.RunWorkerAsync();
}
else
{
fullAutomationWorker = new BackgroundWorker();
fullAutomationWorker.DoWork += FullAutomationWorker_DoWork;
fullAutomationWorker.RunWorkerCompleted += FullAutomationWorker_RunWorkerCompleted;
fullAutomationWorker.RunWorkerAsync();
}
}
Проблема, с которой я столкнулся, заключается в том, что поток пользовательского интерфейса зависает, когда работает фоновый работник, и пользователь переключается на вкладку журнала, когда включена автопрокрутка. У кого-нибудь есть идеи, почему это происходит?