saimanisha Ответов: 0

Почему мы получаем это исключение system.windows.markup.xamlparseexception: 'must create dependencysource on same thread as the dependencyobject.' при обновлении пользовательского интерфейса ?


я пытался получить детали с помощью задачи асинхронно и
обновление пользовательского интерфейса
но я всегда получаю исключение
Система.Окна.Разметка.XamlParseException: 'необходимо создать DependencySource в том же потоке, что и DependencyObject.

Что я уже пробовал:

public void performwindowchanges()
{
 Task<bool> t = Task.Run(async () =>
                        {
                            string authUrl ="url";
                            string data = await NetworkUtility.GetInstance().GetHttpRequestAsync(authUrl, 1);
                            return true;
                        });

                      t.ContinueWith(async (t1) =>
                        {
                            if (t1.Result)
                            {
                              string  status = await Applicationmeth.GetUserDetails();
                                if (status == "Success")
                                     this.Dispatcher.Invoke(() =>
                                  {
                                    InitializeMainwindow();//facing issue in this method
                                  });
                            }
                        });
}

Private void InitializeMainwindow()
{
                          screenWindow = new ScreenWindowControl(); 
                        Application.Current.MainWindow = screenWindow;
                    screenWindow.Show();//HERE IAM GETTING EXCEPTION AS Must create DependencySource on same Thread as the DependencyObject.
                    this.Close();
}

Richard MacCutchan

Вы пытаетесь обновить пользовательский интерфейс из фонового потока, что недопустимо. Google для "UI Crossthread XAML", и вы найдете много предложений.

0 Ответов