WPF背景线程

时间:2013-03-16 08:55:31

标签: c# wpf multithreading

我有WPF项目,基本上只是一个图表。我要做的是在后台线程中更新我的图表点,但后来我创建了一个崩溃的新线程。

public void UpdateChart()
{
 ... 
}

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

例外:

  

必须在与DependencyObject相同的线程上创建DependencySource。

1 个答案:

答案 0 :(得分:3)

您正面临众所周知的跨线程访问问题。由于对象指针在跨线程上下文中无效,因此一个线程的对象无法访问另一个线程的对象。你可以有多种解决方案。

  • 您可以创建一个可以调用的委托方法。谷歌就此而言,它将产生许多结果

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

  • 另一种方法是使用this.invoke(delegate,params [])系统。它允许您在不同的线程中调用该方法而不会使应用程序崩溃。

在c#中使用跨线程gui更新进行简单的谷歌搜索,您将获得大量资料。如果您需要更多相关信息,请与我们联系。