-1

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

public void UpdateChart()
{
 ... 
}

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

例外:

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

4

1 回答 1

3

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

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

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

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

通过简单的谷歌搜索,您将获得很多关于 c# 中跨线程 gui 更新的资料。如果您需要更多信息,请告诉我。

于 2013-03-16T09:39:23.250 回答