문제

내 WPF 응용 프로그램 개발 가상 키보드에 있습니다.그것에 발달 기계입니다.그러나,속도가 느린 컴퓨터에 버튼을 클릭 응답 속도가 느립니다.후 버튼을 클릭하면,지연이 발생하기 전에 디스플레이 업데이트 버튼으로 다운 상태와 단추의 이벤트입니다.무엇을 할 수 있습니를 제거하는 이 지연은?문제 WPF 표시는 문제입니까?

이라고 생각했는 이벤트 처리기도 했는데 여러 가지 방법을 보낼 키보드 키를 누르면 이벤트입니다.상관없이 무엇을 했는데,상호 작용은 여전히 느립니다.현재는 사용:

SendInput(uint nInputs, ref INPUT pInputs, int cbSize);

에서 가져온 user32.dll.내 이벤트 핸들러가 간단하는 지점은 만들기에 대한 매개변수를 호출하는 상기 기능이다.

나 또한 시도를 사용하여 다음과 같은,그러나 없이 더 나은 성과:

 System.Windows.Input.Keyboard.FocusedElement.RaiseEvent(...)

할 수 있는 방법을 제거한 지연은?

도움이 되었습니까?

해결책

말할 수 있습니 무엇을 일으키고 지연?

무언가가 있다면에서 느리 Click 이벤트할 수 있습을 사용하거나 별도의 Thread 를 도용하여 코드를 실행합니다.에 새로운 스레드 코드가 있는 경우에 수행되어야 하는 UI 스레드에서,사용 Dispatcher.BeginInvoke 대기열에까지 그것을 실행할 때 사용자 인터페이스 처리 시간을 단축할 수 있습니다.을 유지하 UI 응답,당신이 필요하다 무거운 코드 주(UI)스레드가 있습니다.

한 경우 가상 키보드에서 로컬정 Window, 복잡성에 따라,당신이 무엇을 하고,당신이 걸릴 수 있습니다 접근 방식을 사용했던 과거에 당신 수동으로 입력 문자를 키보드로 TextBox 는 포커스가 있습니다.

면책 조항: 썼는 코드는 2 년 전,그것을 싫어합니다.는 동안 나는 일반적으로 척 그것은 존재하지 않았다,그것은 당신을 도울 수 있습니다.은 그것을 만들었다는 더 나은,그 이후 하지만 개념 자체가 없는 성능 문제에 속도가 느린 컴퓨터.나는 견적 제프 우주의 블로그에 대한 코드를 당신이 가장 싫어하는 자신의,하지만,잘...

편집: 때문에 당신은 여전히 문제도 Click 빈할 수 있습을 보는 다른 잠재적인 개최한다.는 사용자의 CPU maxed out at100%에서 뭔가?중 하나가 너무 무거운 애니메이션,또는 다른 잠재적인 이벤트?가장 UI 지연은 일반적으로 결과의 끝 나가는 CPU 를 이벤트 또는 너무 오래 걸리에 UI 의 스레드에 있습니다.

하나의 가능성은 경우 WindowAllowsTransparency="True", 의 작업 또는 일을 그래픽 카드 제에서 렌더링 소프트웨어질 수 있습니다 무거운 성과 처벌을 받을 수 있습니다. 과거는,당신이 걸릴 수 있습니다 이 문서는 Microsoft 에 WPF 응용 프로그램 성능 최적화 에 대한 일반적인 방법할 수 있는 최대 속도 처리합니다.

는 것이 좋을 개발하는 사람에 XAML 읽는 마지막 문서입니다.성능의 차이이 같은 작은과 같은 정보를 사용하여 TextBlockLabel, 구현 DependencyPropertyko 대 INotifyPropertyChanged, 습니다 추가,그리고 사실 그들이 벤치마킹 서로에 대한 정말로 중요성을 보여주의 적절한 디자인입니다.

다른 팁

다만 달러이다.나는 WinForms 응용 프로그램 버튼 응답하는데 시간이 걸렸을 것이다.이 일 후에 내가 업그레이드 64-비트 윈도우 7.내가 발견되는 경우 변경 내 프로젝트 목표를"x86"(대신에"모든 CPU"),느린 버튼 응답이 떨어져 갔다.

는 경우에 당신의 이벤트 처리 시간이 오래 걸리를 완료,그것은 잠 UI 는 시간입니다.이 이벤트 처리기:

  private void button1_Click(object sender, RoutedEventArgs e)
  {
     System.Threading.Thread.Sleep(5000);
  }

이벤트 핸들러는 아마 그냥 완료 빠르게 더 빠른 컴퓨터에서.를 위해 느리게 작업할 수 있습 밀어 작동하는 또 다른 스레드가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top