I have Window 1 in which on button click i am opening Window 2 in new thread. Following is my code
 private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        Thread thread = new Thread(() =>
        {
            Scanner w = new Scanner();
            w.Show();
            w.Closed += (sender2, e2) =>
            w.Dispatcher.InvokeShutdown();
            System.Windows.Threading.Dispatcher.Run();
        });
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
    }
Window 2 has form I am getting form values on Button click
 private void EnterProduct(object sender, RoutedEventArgs e)
    {
        var data = ProductDetailsData;
        LoadCurrentBetween objMain = new LoadCurrentBetween(); //new MainWindow();
        objMain.fillorderform(data);
    }
on button click of window 2 i am passing values of form to another View
public void fillorderform(dynamic data)
    {
        this.Dispatcher.Invoke(() =>
        {
            LoadCurrentdetails.Part = data.Part;
            LoadCurrentBetween loadCurrentbtw = new LoadCurrentBetween();
            Switcher.Switch(loadCurrentbtw);
        });          
    }  public static class Switcher
{
    public static MainWindow pageSwitcher;
    public static void Switch(UserControl newPage)
    {
        pageSwitcher.Navigate(newPage);
    }
}
Following code is giving error at "this.Content = nextPage;"
The calling thread cannot access this object because a different thread owns it.
public void Navigate(UserControl nextPage)
    {
        this.Dispatcher.Invoke(() =>
        {
        var aa = nextPage.Dispatcher.CheckAccess();
        this.Content = nextPage;
            });
    }
I have seen similar Questions asked by other developers but i am not getting how to fix. pls help