Можете ли вы рассказать, что вызывает задержка?
Если в вашем мероприятии Click
есть что-то медленное, вы можете использовать отдельный Thread
для выполнения кода. Внутри нового потока, если у вас есть код, который должен быть выполнен в потоке пользовательского интерфейса, используйте Dispatcher.BeginInvoke
, чтобы поставить его в очередь, чтобы он выполнялся, когда пользовательский интерфейс имеет время обработки. Чтобы поддерживать пользовательский интерфейс, вам нужно сохранить какой-либо тяжелый код с основного (UI) потока.
Если ваша виртуальная клавиатура является локальной определенной Window
, в зависимости от сложности того, что вы делаете, вы можете взять an approach I've used in the past где вы просто вручную введите символы с клавиатурой в TextBox
, который имеет фокус.
Отказ от ответственности: Я написал этот код более 2 лет назад и ненавижу его в результате. Хотя я обычно притворяюсь, что этого не существует, это может помочь вам. С тех пор я стал лучше, но сама концепция не имела проблем с производительностью на более медленных машинах. Я бы процитировать блог Джеффа Этвуд о коде, который вы больше всего ненавидите ваш собственный, но хорошо ...
Edit: Поскольку вы до сих пор есть проблемы даже с Click
пустыми, вы можете посмотреть на другом потенциальный трюме -UPS. Является ли процессор пользователя максимальным, чем 100%? Либо слишком тяжелая анимация, либо другое потенциальное событие? Большинство задержек пользовательского интерфейса обычно являются результатом либо максимизированного центрального процессора, либо события, которое слишком длится в потоке пользовательского интерфейса.
Одной из возможностей является, если ваш Window
имеет AllowsTransparency="True"
, большая часть нагрузки, которая, как правило, идут на видеокарту will now be rendered in software, and can have heavy performance penalties. Past, что вы можете посмотреть на эту статью Microsoft на Optimizing WPF Application Performance некоторые общие советы, которые могут ускорить вашу обработку ,
Я предлагаю, чтобы кто-либо, развивающийся в XAML, прочитал эту последнюю статью.Разница в производительности между такими небольшими деталями, как использование TextBlock
против Label
, или реализация DependencyProperty
по сравнению с INotifyPropertyChanged
, действительно может скомпенсироваться, и тот факт, что они проводят сравнительный анализ с каждым, действительно показывает важность правильного дизайна.
Что делает ваш код в обработчике событий? Можете ли вы воспроизвести проблему, если обработчик не подключен к событию клика? –