私はこの問題を解決しようとしてきましたが、.NETフレームワークの問題であるようです。とにかく、私は5000以上のアイテムと、リストビュー内の選択されたアイテムをさらに処理するためのボタンを含むリストビューを持っています。このボタンをクリックすると、リストビューの "listview.HeaderStyle"プロパティを "ColumnHeaderStyle.Nonclickable"に設定する必要があります。 今私はそれを行う。プログラムは10秒間停止してから作業を続けます。何が起きているのか、なぜこれが起きているのか分かりません。私は皆さんにこれについての解決策があることを願っています。 アイデア?ListViewのHeaderStyleを変更するとアプリケーションが停止するのはなぜですか?
答えて
私は今の基本的な解決策を見つけた、私が必要とするすべては、今はもう「listview.HeaderStyle」プロパティを変更する必要はありません
myListview.ColumnClick += new ColumnClickEventHandler(delegate{});
を設定することです。 基本的にHeaderStyle
プロパティからColumnClick
イベントを無効にしていました。 HeaderStyleをnonClickableに設定するのではなく、イベントハンドラ内の関数を削除/変更するだけです。
BackgroundWorker
MSDNを使用してこの問題を解決できます。
注:このソリューションを使用しても、しばらくフォームがハングします。 はUIスレッドをブロックするため、リストにバインドされるアイテムが5000以上あるため、winformがハングします。しかしlistview.HeaderStyle
は変更されます。
は、あなたが直接ColumnHeaderStyle.Nonclickable
にlistview.HeaderStyle
のpropertを変更するには、ボタンをクリックしたときに、この
- 試してみてください。次に、
RunWorkerAsync
をBackgroundWorker
と呼んでください。 DoWork
イベントハンドラでは、処理を行い、一度データをリストビューにバインドします。これを行うには、プロジェクトに次の拡張クラスを追加する必要があります。
拡張クラス
public static class ControlExtensions
{
public static void Invoke(this Control control, Action action)
{
if (control.InvokeRequired) control.Invoke(new MethodInvoker(action), null);
else action.Invoke();
}
}
あなたはこれがあなたのために働く
listview.Invoke(() => (listview.DataSource = dataSource; });
希望をListViewのためにデータをバインドすることができ、これを使用します。
考えてくれてありがとう..しかし、実際にはそれほど違いはありません。私はちょうど何かをブロックしない別の簡単な解決策を考えました...そのColumnclickイベントを空の関数に変更しました。 – SolidSnake
これは、バックグラウンドスレッドですべての計算を行い、UIスレッドを自由に保つという考えです。 UIスレッドはレンダリング部分のみを処理し、理想的には計算を処理しません。 –
- 1. 実行時にアプリケーションのサイズを変更するとデータ送信が停止するのはなぜですか?
- 2. アクティブセルの変更時にVBAマクロが停止するのはなぜですか?
- 3. Pythonアプリケーションが 'system'/kernel CPU時間で停止するのはなぜですか?
- 4. デバッグ中にプロジェクトを一時停止すると他のプログラムが停止するのはなぜですか?
- 5. テキスト/テキストビュー内のすべてを変更するとアプリケーションが停止する
- 6. ListViewにonClickディレクティブを追加すると、アプリケーションの動作が停止する
- 7. NSPredicateを追加すると、NSFetchedResultsControllerデリゲートが停止を停止するのはなぜですか?
- 8. メッセージサンプリングプロセッサがプロービングメッセージを停止するのはなぜですか?
- 9. アプリケーションを実行しようとすると、プログレスバーが27%で停止するのはなぜですか?
- 10. コンテキストメニューからコピーが停止するのはなぜですか?
- 11. BaseManagerのロギングが停止するのはなぜですか?
- 12. ループが途中で停止するのはなぜですか?
- 13. C#ランダムジェネレータをシードすると、プログラムが停止するのはなぜですか?
- 14. YARNでKafkaから消費するとSpark Streamingアプリケーションが停止するのはなぜですか?
- 15. なぜbind_resultの後でmysqliが停止するのですか?
- 16. iPhone:CATransitionを変更するとUIActivityIndicatorViewのアニメーションが停止する
- 17. コードが停止しているのはなぜですか?
- 18. なぜElastic Beanstalkの動作が停止するのですか?
- 19. なぜPHPエラーのログが停止するのですか?
- 20. デバッガがなぜ `use`文で停止するのですか?
- 21. 位置を変更すると幅の変更が停止する
- 22. Netbeans - Javaアプリケーションが「停止」することはできますか?
- 23. なぜマルチプロセッシングが停止するのですか
- 24. ロードランナー:なぜトランザクションが停止するのですか?
- 25. IISはしばらくすると停止するのはなぜですか?
- 26. Eclipseがブレークポイントで停止しないのはなぜですか?
- 27. iOSシミュレータのアプリケーションを停止しないのはなぜですか?applicationWillTerminate:?
- 28. MPMoviePlayerController - contentURLを変更するとビデオが停止する
- 29. グリッドパネルイベントがExtJS 4での起動を停止するのはなぜですか?
- 30. 残念ながら、Androidのレイアウトファイルで.xmlを変更すると物理デバイスでアプリケーションが停止しました
これが数秒遅れてしまうのは特に驚きではありません。おそらくフレームワークは、プロパティを設定するたびにネイティブのListViewコントロールを再作成します。 ListViewには5000以上のアイテムがたくさんあることに注目してください... –
解決策はありますか? – SolidSnake