Я пытаюсь запустить функцию в другом классе, чем диспетчер, с помощью фонового рабочего и обновить ее на каждой итерации. Я не подвожу никаких ошибок и BackgroundWorker работает правильно, но мое текстовое поле никогда не обновляет ...Обновление C# для выполнения рабочего процесса из отдельного класса
public partial class MainWindow : Window
{
public BackgroundWorker worker = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(workerDoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(workerProgressChanged);
}
private void myButtonClick(object sender, RoutedEventArgs e)
{
worker.RunWorkerAsync();
}
void workerDoWork(object sender, DoWorkEventArgs e)
{
yv_usfm.convert(worker);
}
void workerProgressChanged(object sender, ProgressChangedEventArgs e)
{
myTextBox.Text = "some text";
}
}
public class yv_usfm
{
public static void convert(BackgroundWorker worker)
{
int i = 1;
while (i < 100)
{
worker.ReportProgress(i);
i++;
}
}
}
Если вы подумываете обновить прогресс «BackgroundWorker» из * другого * класса, вы неправильно поняли, что такое «BackgroundWorker». Я предлагаю вам использовать 'Task' или пул потоков. –
Я только что скопировал и запустил ваш код, и он отлично работает для меня ... – MisterXero
Да, я понятия не имею, почему мое текстовое поле не обновляется – user1898657