2

UIで個別に作成するのではなく、いくつかのスクリプトを使用してUIで1000種類以上のオブジェクトを作成するとフリーズするクライアントサーバーC#アプリケーションがあります。

特定のイベントに対して多くのイベント ハンドラーを使用していますが、私の理解では、すべてのスレッド (UI とバックグラウンド) とイベント ハンドラーは適​​切に管理されています。次に、クライアント アプリケーションもフリーズします。その背後にある正確な理由はわかりません。アプリケーションのハングアップのピーク時は、約 16 スレッドかかりました。タスク マネージャーは、90% 以上の CPU 時間を使用していると報告しています。

その背後にある理由を誰か教えてくれませんか

   [STAThread]
    static void Main()
    {
        try
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.DoEvents();
            Application.Run(new Test());
        }

アップデート

Treeview、Listview、および propertygrid に遅延読み込みを適用するにはどうすればよいですか。これらの方法以外に beginupdate、endupdate、double buffering を使用しましたか??

アップデート

CPU 使用率が高いとはどういう意味ですか。私のアプリケーション exe は 13 スレッドでハングしていますThreadPriority.Lowest。どこかで使用すると CPU 使用率が低下すると聞きましたが、それでも動作しますか?

4

2 に答える 2

2

ユーザーがフォームを下にスクロールするときにオンデマンドでコントロールを読み込むには、ある種の遅延読み込み技術が必要なようです。多くのコントロールを一度にロードすると、必然的にアプリケーションがロックされます。

この記事では、winform アプリのパフォーマンスを改善するためのヒントをいくつか紹介します。

于 2012-05-01T15:52:56.663 に答える
0

Treeviews と Listviews は、多くのロジックを追加しないと、単独ではあまり効率的ではありません。それらを最適化する時間がない場合は、驚くべきオープン ソース ObjectListView のようなサード パーティのソリューションを確認することをお勧めします。

何百万ものレコードを処理する FastObjectListView や、階層を処理する TreeListView など、特定の状況を処理するためにいくつかの種類があります。

マスターするには少し手間がかかりますが、ツリービューとリストビューを作成するのに必要なものにはほど遠い..よくObjectListViews :D

http://objectlistview.sourceforge.net

http://objectlistview.sourceforge.net/cs/recipes.html#what-flavor-of-objectlistview-do-i-want-to-use

http://objectlistview.sourceforge.net/cs/recipes.html

http://objectlistview.sourceforge.net/cs/gettingStarted.html

私はいくつかのプロジェクトでそれを使用して大成功を収めました!!

乾杯、

于 2012-05-04T17:00:38.737 に答える