> -- Цитата:
> 3. По поводу Synch.BeginOberonSafe и Synch.EndOberonSafe.Ставил я их. Эффект такой: мышью не двигаешь кубик крутится медленно, если двигать мышью быстро то и скорость вращения возрастает.
Естественно - BeginOberonSafe ждет, пока главный цикл обработки сообщений будет в определенной точке, выполняет в этой точке блокировку главного потока среды. Затем мы выполняем действия из побочного потока, не боясь коллизий, и отпускаем главный поток среды "на все четыре стороны".

BeginOberonSafe - это, так скажем, не "реального времени" вещь. Вся логика по изменению состояния отображения должна производиться отдельным потоком, который не завязан на GUI и никого не ждет, работает синхронно по времени, со Sleep. А периодический сигнал на обновление экрана лучше всего делать через Services.Action. Хотя можно и через специальный поток обновления с BeginOberonSafe. Пример такой графики (с летающими шариками и комнатами) есть в Active BlackBox. Хотя Вы правы - меню и т.п. также прерывает перерисовку. Можно разобраться и переделать политику обработки сообщений в HostWindows, но у меня сейчас времени на это нет... Кстати, допускаю, что это принципиальная особенность MDI-интерфейса в Винде.

P.S. А использовать многопоточность в обычной версии ББ для работы нельзя, только поэкспериментировать/поиграться. Попробуйте в побочном потоке сделать активное выделение памяти и увидите мгновенную смерть среды...Почему и был сделан Active BlackBox.