我有 WPF 项目,它基本上只是一个图表。我要实现的是在后台线程中更新我的图表点,但随后我正在创建一个它崩溃的新线程。
public void UpdateChart()
{
...
}
Thread newThread = new Thread(UpdateChart());
newThread.Start();
例外:
必须在与 DependencyObject 相同的线程上创建 DependencySource。
我有 WPF 项目,它基本上只是一个图表。我要实现的是在后台线程中更新我的图表点,但随后我正在创建一个它崩溃的新线程。
public void UpdateChart()
{
...
}
Thread newThread = new Thread(UpdateChart());
newThread.Start();
例外:
必须在与 DependencyObject 相同的线程上创建 DependencySource。
您正面临众所周知的跨线程访问问题。一个线程的对象不能访问另一个线程的对象,因为对象指针在跨线程上下文中无效。您可以有多种解决方案。
您可以创建一个可以调用的委托方法。谷歌这个,它会产生很多结果
另一种选择是使用线程状态事件,例如完成/进度等。后台工作组件允许进度报告。您可以使用它来更新图表。
另一种方法是使用 this.invoke(delegate,params[]) 系统。它将允许您在不同的线程中调用该方法,而不会使您的应用程序崩溃。
通过简单的谷歌搜索,您将获得很多关于 c# 中跨线程 gui 更新的资料。如果您需要更多信息,请告诉我。