Окно просмотра Helix продолжает масштабирование, пока оно находится на паузе в точке останова - PullRequest
0 голосов
/ 30 января 2019

Я запускаю окно просмотра Helix и ловлю событие mousewheeled с previewmousewheel для запуска метода.При отладке некоторых изменений, которые я внес в свои методы, я обнаружил, что когда я устанавливаю точку останова (где-нибудь между перехватом мыши и последующим применением увеличения в окне просмотра), величина увеличения от одного фиксатора колеса мыши будет непрерывно увеличиватьсяпропорционально количеству времени, в течение которого программа была приостановлена ​​(в основном, количество времени, прошедшее с момента мышиного устройства и применения дельты к области просмотра).Это делает отладку моих изменений, как обычно, кажется невозможной, хотя, конечно, я могу обойти это.

Реальная проблема заключается в том, что теперь я понимаю, что масштабирование совершенно ошибочно, поскольку некоторые операциимежду событием и настройкой окна просмотра может пройти больше времени, в зависимости от того, что я делаю.

Кажется, что это происходит совершенно случайно, когда я пытаюсь внести изменения в камеруи полностью контролировать поведение камеры на основе деталей, характерных для моей программы.

Есть ли какой-нибудь способ отключить это или смягчить это почти полностью?

Следующий код является фрагментом из моей программы, который, кажется, является основным драйвером проблемы, но я 'Я не уверен, что смогу просто удалить этот метод хранения времени в программе, потому что, насколько я знаю, нам определенно нужен асинхронный хронометрист.

    private async Task DoWorkAsyncInfiniteLoop()
    {
        while (true)
        {
            if (Run)
            {
                Time.timeElapsed += Time.runSpeed;
                Time.simTime += Time.runSpeed;
                updateAll();
            }
            // don't run again for at least 200 milliseconds
            await Task.Delay(Time.interval);
        }
    }

возможно, есть некоторые строки, которые я могу добавить, которые в основном позволятмне применить масштабирование к окну просмотра, не дожидаясь запуска строки await Task.Delay (Time.interval)?

Должен признать, что мне не очень понятно, как работает этот код, но я знаю,что он останавливается на строке await Task.Delay, прежде чем, наконец, я нажимаю «шаг в» (F11) еще раз, и он каким-то образом просто применяет чудовищный зум, который не нужен, без моего кода после запуска.

Есть ли обходные пути?

1 Ответ

0 голосов
/ 31 января 2019

Попробуйте установить IsInertiaEnabled = false в окне просмотра

...