Я запускаю окно просмотра 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) еще раз, и он каким-то образом просто применяет чудовищный зум, который не нужен, без моего кода после запуска.
Есть ли обходные пути?