2013-03-16 3 views
-1

У меня есть проект WPF, который в основном представляет собой диаграмму. Что я, что нужно сделать, это обновить мои точки графика в фоновом потоке, но затем я создаю новый поток, который он сбой.WPF Background threading

public void UpdateChart() 
{ 
... 
} 

Thread newThread = new Thread(UpdateChart()); 
newThread.Start(); 

Исключение:

должны создать DependencySource на той же тему, как DependencyObject.

+1

Я вам просто говорю об этом сообщении об ошибке, вы получите довольно много вопросов и ответов, некоторые из них здесь, в SO. Я предлагаю сначала прочитать о [Модель потоков WPF] (http://msdn.microsoft.com/en-us/library/ms741870.aspx). – Clemens

ответ

3

Вы столкнулись с хорошо известной проблемой доступа к сквозным потокам. Объект одного потока не может получить доступ к объекту другого потока, поскольку указатели объектов недействительны в контексте сквозных потоков. У вас может быть несколько решений.

  • Вы можете создать метод делегата, с которым сможете позвонить. Google на этом и даст много результатов

  • Другой вариант - использовать события состояния потока, такие как завершение/прогресс и т. Д. Компонент рабочего фона позволяет отчет о ходе работы. Вы можете использовать его для обновления диаграммы.

  • Другим методом является использование этой системы (delegate, params []). Это позволит вам вызывать метод в другом потоке без сбоя вашего приложения.

Вы получите много материала с простым поиском google по перекрестной резьбе gui update в C#. Дайте мне знать, если вам нужна дополнительная информация об этом.