Helix Viewport 在断点处暂停时继续缩放

Helix Viewport continues zooming while paused at a breakpoint

我正在 运行 一个 Helix 视口,并且正在使用 previewmousewheel 捕获一个鼠标滚轮事件到 运行 一个方法。在调试我对我的方法所做的一些更改时,我发现当我设置一个断点时(在捕获 mousewheeledevent 和随后在视口中应用缩放之间的任何位置)鼠标滚轮的一个制动器的缩放量将不断增加与程序暂停的时间量成正比(基本上是从 mousewheeledevent 到将增量应用于视口所经过的时间量)。这使得我无法像通常那样调试我的更改,尽管我当然可以解决这个问题。

真正的问题是,现在我意识到以这种方式缩放是完全不稳定的,因为在事件和视口设置之间,某些操作比其他操作花费的时间更长,具体取决于我在做什么。

当我尝试更改相机并根据我的程序的特定细节完全控制相机行为时,这似乎是一件完全偶然的事情。

有什么方法可以阻止或几乎完全缓解这种情况?

下面的代码是我程序中的一个片段,它似乎是问题的主要驱动因素,但我不确定我是否可以在程序中删除这种保持时间的方法,因为我们确实需要一个异步的据我所知,计时员。

    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);
        }
    }

也许我可以添加一些行,这些行基本上允许我将缩放应用到视口,而无需等待等待 Task.Delay(Time.interval) 行到 运行?

我必须承认我不太清楚该代码是如何工作的,但我知道它在 await Task.Delay 行停止,最后我又按了 "step into" (F11)时间,它以某种方式只是应用了不想要的可怕缩放,而在那之后我没有看到任何代码 运行.

有什么解决方法吗?

尝试在视口上设置 IsInertiaEnabled = false