所以我建立了一个小的应用程序,它有一个物理引擎和一个显示器。显示器连接到一个处理物理引擎的控制器上(实际上是一个处理控制器的视图模型,但有细节)。
当前,控制器是一个委托,由begin调用激活,由cancellation令牌停用,然后由endinvoke获取。在lambda笔刷PropertyChanged(连接到INotifyPropertyChanged)中,它使UI保持最新。
据我所知,BeginInvoke方法激活的是一个任务,而不是另一个线程(在我的计算机上,它确实激活了另一个线程,但这并不能保证从我所做的阅读来看,这取决于线程池它希望如何完成任务),从我所做的所有测试来看,这是很好的。直到CancellationToken被杀死,lambda才完成。它有一个睡眠和一个更新(所以它有点像一个实时物理引擎…它很粗糙,但我不需要实时的精确性,只需要足够的感觉)
我的问题是,这是否适用于其他计算机,或者我应该切换到显式线程,我启动和取消?我正在考虑的场景是在一个单核处理器上,是否有可能第二个任务将获得大量更少的处理器时间,从而使我可接受的不精确模型变成不可接受的不精确(即,在切换之前等待毫秒而不是微秒?)或者是他们做这件事的更好的方法,我还没有想到?