2016-10-05 39 views
0

私はWPFアプリケーション(本番環境)で非常に奇妙なシナリオを起こしています。私は<Button>要素を画面に表示しています。この要素にはXAMLコードビハインドでClickイベントがバインドされています。ボタンのクリックハンドラは、HttpClientを使用して(await/asyncを使用して)RESTエンドポイントをヒットし、受信したデータで画面を更新します。タッチインタラクションがWPFのクリックイベントより遅いのはなぜですか?

このアプリケーションは、いくつかの格安Dellタブレットで動作しているため、タッチスクリーンが主要な対話モードです。しかし、テスト目的のために、私はマウスを差し込んだ。

マウスを使用してボタンをクリックすると、アプリケーションのパフォーマンスは高くなります。言い換えれば、それは速いです。 RESTコールは100〜200ミリ秒以内に完了します。

私はボタン、押して、画面をタップすると - 私を信じて - まったく同じクリックハンドラに当たるとまったく同じコードパスを行い、私は確認しているが、それは通常、パフォーマンスではありません。突然、全く同じ REST呼び出しには時間がかかります。時には2秒かかります。それ以外の時間は10秒かかる。なぜこの違いが起こっているのか説明がありません。

サーフェイスプロ3(デルのタブレットよりもはるかに優れたハードウェア)でこの同じアプリケーションをデバッグすると、問題を再現できません。しかし、それが純粋にハードウェアの問題であった場合、私はなぜそれがいくつかのケースでは(マウスを使用して)実行可能であるが、他のものでは(タッチスクリーンを使用して)実行できないのだろうと思うだろう。

私はMVCEを思いつくのに苦労しています。作成しようとしたスリムなオフショーはこのような問題はないようですが、 1と。

他の誰かがタッチスクリーンで同様の問題に遭遇したのかと疑問に思います。私が持っている唯一の理論は、WPFタッチハンドラに関するものが、別々のスレッドやコンテキストを分離したり、別の優先順位(そのようなもの)で物事を起こすということです。

+0

.Netフレームワークバージョン4.6.1を試しましたか?タッチデバイスでは大きなパフォーマンス向上が見られました。 – lhildebrandt

+0

昨日、そのアップグレードを試してみましたが、残念ながら問題は解決しませんでした。しかし、提案をありがとう。 – SoaperGEM

答えて

0

今日、私はそれを最後に考え出しました。私はこのコードを使用して、私のApp.xaml.csファイルに登録されているグローバルなタッチダウンイベントハンドラを持っていた:

EventManager.RegisterClassHandler(typeof(UIElement), UIElement.TouchDownEvent, new EventHandler<TouchEventArgs>(MyEventHandler)); 

私はその行をコメントすると、すべてが時間の100%完全にパフォーマンスです。問題は実際にはWindowに登録したいと思っているときは、すべてUIElementに登録されていることがわかります。それは私の問題を解決したようだ。

関連する問題