2013-08-09 3 views
3

Привет, я новичок в написании приложений на C#.Сбой приложения при переключении на другой XAML

Извините, если это слишком простое. У меня есть поток в Main xaml, который запрашивает некоторую информацию и обновляет свойство.

Итак, как только я обнаружил, что свойство имеет значение «X», мне нужно переключиться на другое представление XAML.

Проблема, с которой я столкнулся, - это когда я вызываю переключатель из свойства, мое приложение падает. Я думаю, что это имеет отношение к потоку.

Qn: Как переключиться на другой вид XAML, как только я обнаружил, что значение свойства изменилось?

Пример кода:

общественный частичный класс MainWindow: Window {

 .... 
    private Thread t; 
    public static enState dummy; 

    public enState SetSTATE 
    { 
     get 
     { 
      return dummy; 
     } 
     set 
     { 
      dummy = value; 
      if (dummy == A) 
      { 
        var NEWVIEW = new VIEW1(); 
        contentGrid.Children.Add(NEWVIEW);  // - crashes in this block 
       } 
     } 
    } 

    public void startThread() 
    { 
     t = new Thread(getInfo); 
     t.Isbackground = true; 
     t.start(); 
    } 

    public void getInfo() 
    { 
     while (true) 
     { 
      int x = somefunc(); 
      if (x == conditon) 
      { 
       SetSTATE = A; 
      } 
      Thread.Sleep(1000); 
     } 
    } 
    MainWindow() { startThread(); } 

}


общественный частичный класс NewView: UserControl

ответ

1

Вы не можете изменить коллекция из фоновой темы. Вам необходимо будет явно использовать Dispatcher.BeginInvoke для внесения изменений:

if (dummy == A) 
{ 
    contentGrid.Dispatcher.BeginInvoke(new Action(() => 
    { 
     var NEWVIEW = new VIEW1(); 
     contentGrid.Children.Add(NEWVIEW); 
    })); 
} 
+0

Спасибо, что сделал. Это сработало. Можете ли вы порекомендовать какую-нибудь хорошую книгу для их изучения? –

+0

@GanapathySubramanian В принципе, вам всегда нужно это делать, если вы хотите изменить элементы пользовательского интерфейса из фонового потока. С WPF нужны только коллекции. –

Смежные вопросы