Крест Silverlight DataBinding распараллеливает проблему

6
задан Brian Leahy 5 September 2008 в 22:42
поделиться

4 ответа

Вы попытались реализовать INotifyPropertyChanged?

1
ответ дан 16 December 2019 в 21:49
поделиться

Метод считывания свойства для RootVisual на Классе приложений имеет проверку потока, которая вызывает то исключение. Я обошел это путем хранения диспетчера корневого visual в моем собственном свойстве в моем App.xaml.cs:

public static Dispatcher RootVisualDispatcher { get; set; }

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new Page();
    RootVisualDispatcher = RootVisual.Dispatcher;
}

Если Вы затем называете BeginInvoke на Приложении. RootVisualDispatcher, а не Приложение. Текущий. RootVisual. Диспетчер Вы не должны получать это исключение.

0
ответ дан 16 December 2019 в 21:49
поделиться

Я столкнулся с подобной проблемой, но это было в формах Windows:

У меня есть класс, у которого есть собственный поток, обновляющий статистику другого процесса, есть элемент управления в мой пользовательский интерфейс, привязанный к этому объекту. У меня возникли проблемы с вызовами между потоками, вот как я их решил:

Form m_MainWindow; //Reference to the main window of my application
protected virtual void OnPropertyChanged(string propertyName)
{
  if(PropertyChanged != null)
    if(m_MainWindow.InvokeRequired)
      m_MainWindow.Invoke(
        PropertyChanged, this, new PropertyChangedEventArgs(propertyName);
    else
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName);
}

Кажется, это отлично работает, если у кого-то есть предложения, дайте мне знать.

0
ответ дан 16 December 2019 в 21:49
поделиться
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => {...});

Также посмотрите здесь.

7
ответ дан 16 December 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: