2013-03-16 98 views
-1

我有WPF项目,这基本上是一个图表。我该怎么实现的是更新我的图表点在后台线程,但后来我创造它崩溃了一个新的线程。WPF背景线程

public void UpdateChart() 
{ 
... 
} 

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

例外:

必须在同一个线程中的DependencyObject创建DependencySource。

+1

我你只是谷歌的错误信息,你会得到相当多的问题和答案,其中一些人在这里SO。我会建议先阅读关于[WPF线程模型](http://msdn.microsoft.com/en-us/library/ms741870.aspx)。 – Clemens 2013-03-16 09:01:58

回答

3

您正面临众所周知的跨线程访问问题。一个线程的对象不能访问另一个线程的对象作为对象指针不是在交叉线程上下文有效。你可以有多种解决方案。

  • 您可以创建一个可以调用的委托方法。谷歌在这一点,它会产生许多成果

  • 另一种选择是使用线程状态的事件,如完成/进度等后台工作组件允许的进展情况。您可以使用它来更新图表。

  • 的另一种方法是使用this.invoke(委托,则params [])系统。它将允许您在不会导致应用程序崩溃的情况下在不同的线程中调用该方法。

你会得到很多材料与简单的谷歌搜索交叉线程GUI更新在C#中。让我知道你是否需要更多的信息。