我正在开展一个项目,我有一个DispatcherObject
的多个实例 - 包含Model3D
的继承类。我需要这些实例通过名为Update()
的方法异步更新其模型(更改顶点,法线等)。 Update()
将剥离执行某些计算并应用新顶点,法线等的线程。
模型可能具有不同的复杂性,只是将更新分派给相同的UI调度程序很慢(请参阅下面的代码示例)。此更新需要每秒发生多次(从20到500 Hz)。我想知道是否有一些简单的方法允许多个线程同时更新UI。
public void Update()
{
Thread th = new Thread(() =>
{
// Do some computations to decide new vertices, normals...
Dispatcher.Invoke(() =>
{
// Apply new vertices, normals to model.
// Note: There could be thousands of vertices
}
});
th.Start();
}
我知道将线程的单元状态设置为STA并在线程内调用System.Windows.Threading.Dispatcher.Run()
,但这似乎只适用于多窗口应用程序。在我的例子中,模型在同一个Viewport3D
内呈现,因此也是同一个窗口。
我还考虑在需要时使用Dispatcher.CurrentDispatcher
创建新的调度程序,但这似乎不起作用。
非常感谢任何建议。感谢。