• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# でDataTableの更新を高速化したい。)

C#でDataTableの更新を高速化!

このQ&Aのポイント
  • C#でDataTableの更新を高速化する方法を教えてください。
  • 現在、dataTblには1000件程度のデータが保存されており、Select()で300件程度を検索している状況です。しかし、for文の中でのデータの変更が非常に遅く、約10秒かかってしまいます。
  • どのようにすれば更新処理を高速化できるのでしょうか?助言をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

データバインドしていませんか? BindingSource のバインドを止める → SuspendBinding / ResumeBinding コントロールの表示を止める → SuspendLayout/ResumeLayout

naoja
質問者

お礼

ありがとうございます。 SuspendBindingは気になっていたので、それ自体は止めていました。 私の質問にも問題があったのですが、上位でDataGridViewによる表示をおこなっておりました。 その結果、dataTableを変更することで、DataGridView側の表示フォーマットを変更するロジックが走ってしまっていたようです。 そういう意味では、SuspendLayoutを実施して表示を止めるようしてみたのですが、あまり効果は得られませんでした。 方向性として正しいと判断し、原因を追及したところ、Dataが更新されるたびに、DataGridView側のセルの各縦横幅を調整しに行っていたようです。 AutoSizeColumsModeおよびAutoSizeRowsModeがAllCellsになっていたことが原因でした。 これらの設定を、Noneにすると格段に速くなったのですが、表示状態が以前(AllCells)の時と比べ、異なってしまいました。 そこで、DisplayedCellsにすることで、表示上も支障なく速度の向上を得られることに成功しました。 方向性を与えて頂いてありがとう御座います。

関連するQ&A