Mam problem ze zmianą stanu kontrolki w WPF z innej klasy oraz innego wątku. Wygląda to następująco posiadam klasę główną MainWindow która wyświetla okienko programu. Z klasy tej wywołuję nowy wątek w innej klasie. I teraz chcę z tego wątku zmienić kontrolkę w MainWindow. Napisałem coś takiego:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Class1 th = new Class1();
Thread th2 = new Thread(th.DoSomething);
th2.Start();
}
private void progressBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
}
}
class Class1
{
public Class1()
{
}
public void DoSomething()
{
for (int i = 0; i < 101; i++)
{
Console.WriteLine(i);
Thread.Sleep(100);
progressBar.Dispatcher.BeginInvoke((Action)(() =>
{
progressBar.Value = i;
}), null);
}
}
}
Podczas kompilacji otrzymuję błąd:
The name 'progressBar' does not exist in the current context
Jeżeli metodę DoSomething() umieszczę w klasie MainWindow i tam ją wywołam wszystko działa poprawnie. Próbowałem już różnych rozwiązań ale rezultat był ciągle podobny.