Итак, я создал небольшое приложение с физическим движком и дисплеем. Дисплей подключен к контроллеру, который обрабатывает физический движок (ну, на самом деле, модель представления, которая обрабатывает контроллер, но подробности).
В настоящее время контроллер является делегатом, который активируется при запуске-запуске и деактивируется токеном отмены, а затем вызывается при помощи endinvoke. Внутри лямбда-кисти PropertyChanged (подключен к INotifyPropertyChanged), которая поддерживает актуальность пользовательского интерфейса.
Из того, что я понимаю, метод BeginInvoke активирует задачу, а не другой поток (который на моих компьютерах активирует другой поток, но это не является гарантией от прочитанного мною чтения, это зависит от пула потоков, как он хочет чтобы получить задание выполнено), что хорошо от всех испытаний, которые я сделал. Лямбда не завершается, пока не отменен токен отмены. У него есть сон и обновление (так что это своего рода имитация физического движка в реальном времени ... это грубо, но мне не нужна реальная точность в реальном времени, просто достаточно, чтобы почувствовать)
Вопрос, который у меня возникает, будет ли это работать на других компьютерах, или я должен переключиться на явные потоки, которые я запускаю и отменяю? Сценарий, о котором я думаю, связан с одноядерным процессором. Возможно ли, что вторая задача получит значительно меньше процессорного времени и тем самым превратит мою приемлемо неточную модель во что-то недопустимо неточное (т. Е. Ожидание миллисекунд перед переключением, а не микросекунд?). Или это лучший способ сделать это, чего я еще не придумал?