4

CF 上の Winform は少し重く、多数の Windows ハンドルを初期化するにはかなりの時間とメモリが必要です。もう 1 つの問題は、組み込みのダブル バッファリングの欠如と、UI のレンダリングに対する制御の欠如です。これは、プロセッサを集中的に使用する操作中に、UI によってユーザーが半分レンダリングされた画面を見つめたままになる可能性があることを意味します。良い!

この問題を軽減するために、私は軽量のコントロール フレームワークを探します。

軽量とは、コントロールの描画を完全に制御でき、多くの高価なウィンドウ ハンドルを使用しないコントロール ライブラリを意味します。

注: UI スレッドで実行しすぎているとは思わないでください。そうではありません

4

4 に答える 4

2

先日、これに出くわしました。少なくとも出発点としては役立つかもしれません: Fuild - Windows Mobile .NET Touch Controls。ルック アンド フィールは素晴らしいですが、デザイン時のサポートはありません。メモリ フットプリントなどについてはよくわかりませんが、すべてがダブル バッファリングされており、パフォーマンスはかなり良いようです。

于 2009-06-04T14:26:46.510 に答える
1

わかりました、頭のてっぺんからアイデアを出しました...

アプリケーションで、ワーカースレッドとGUIスレッド間で共有される同期オブジェクト(クリティカルセクションやシングルロックなど)を作成するのはどうでしょうか。ペイントを上書きします。ペイントを開始するときは、他のすべてのスレッドをブロックして、CPUを占有しているときに半分ペイントされた画面が残らないようにします。

(もちろん、これはあなたのユーザーにきれいな写真を提示することがあなたが必要とする最も重要なことであることを前提としています;))

于 2008-09-27T11:30:07.253 に答える
0

実際には、ペイント イベントをオーバーライドできます。

そして、長時間実行される操作を別のスレッドにオフロードするという考え方です。これは、他のイベント駆動型フレームワークと何ら変わりはありません。 Paint イベントの処理に依存するものはすべて、その影響を受けやすくなります

また、ペイント イベントがいつ発生するかを判断できるシステムもありません。この種のイベントは、通常、アプリケーション (またはフレームワーク) の外部にあるウィンドウ マネージャー レイヤーによって発生します。自分でイベントを処理し、何もしない場合もありますが、お勧めしません。

于 2008-08-28T19:49:57.463 に答える
0

少し遅く、描画イベントを制御できないため、プロセッサを集中的に使用する操作中に、UI によってユーザーが半分レンダリングされた画面を見つめたままになる可能性があります。

一般に、UI スレッドで負荷の高いタスクを実行することはお勧めできません。UI の応答性を維持するには、これらのタスクをワーカー スレッドで実行する必要があります。

于 2008-08-28T19:50:35.403 に答える