你能说出是什么导致了你的延误吗?
如果您的事件有些缓慢Click
,您可能希望使用单独Thread
的代码来执行代码。在新线程中,如果您有必须在 UI 线程上执行的代码,请使用Dispatcher.BeginInvoke
将其排队等待 UI 有处理时间时执行。为了保持 UI 响应,您需要将任何繁重的代码远离主 (UI) 线程。
如果您的虚拟键盘是本地的Window
,具体取决于您正在做的事情的复杂性,您可以采用我过去使用的方法,您只需手动将键盘字符填充到TextBox
具有焦点的键盘字符中。
免责声明:我在 2 年前编写了该代码,因此讨厌它。虽然我通常会假装它不存在,但它可能会帮助你。从那以后我已经做得更好了,但是这个概念本身在速度较慢的机器上没有性能问题。我会引用 Jeff Atwood 的博客关于你最讨厌的代码是你自己的,但是,好吧......
编辑:由于即使是空的你仍然有问题Click
,你可能想看看其他潜在的阻碍。用户的 CPU 是否因某事而达到 100%?要么是太重的动画,要么是另一个潜在的事件?大多数 UI 延迟通常是由于 CPU 用尽或事件在 UI 线程上花费的时间过长造成的。
一种可能性是,如果您Window
有AllowsTransparency="True"
,通常会转到显卡的大部分工作负载现在将在软件中呈现,并且可能会导致严重的性能损失。除此之外,您可以查看这篇关于优化 WPF 应用程序性能的 Microsoft 文章,了解一些可以加快处理速度的一般技巧。
我建议任何使用 XAML 开发的人阅读上一篇文章。诸如使用TextBlock
vs.Label
或实现DependencyProperty
's vs. 之类的小细节之间的性能差异INotifyPropertyChanged
确实可以加起来,并且它们针对每个细节进行基准测试的事实确实表明了正确设计的重要性。