- - PR -
DataTableへの初回Addにのみ時間がかかります
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-01-17 11:10
お世話さまです。
VB.NET2003+Windowsフォームでのお話です。 DataTableに追加したレコードをDataGridにバインド表示させて いるのですが、なぜか初回レコードの追加(Add)時にのみ 結構な時間(平均3、4秒程度)かかってしまいます。 実際には15列ほどあるテーブルなのですが、話を簡略化 するために1列のレコードに置き換えたコードを下記に記します。 Private dataSet1 As New DataSet("DS") Private dataTable1 As DataTable = dataSet1.Tables.Add("TBL") Private dataClumn1 As DataColumn = dataTable1.Columns.Add("TITLE") Private RecCtr As Integer Private Rec As New ArrayList Private Sub Show_Grid() dataTable1.Clear() Dim i As Integer For i = 0 To Rec.Count - 1 dataTable1.Rows.Add(New [Object]() {Rec(i)}) Next dgdTest.SetDataBinding(dataSet1, dataTable1.TableName) End Sub グリッドにレコードを追加する度に、このShow_Grid関数が呼び出される のですが、Debug.WriteLine(TimeOfDay)で上記コードのどこで時間 がかかっているのかを計測した結果、初回Addの箇所で3、4秒かかり、 2回目以降ではコンマ何秒で済んでいるのです。 で、更に不思議なのが、上記の追加ロジックを実装しているフォームAと これと全く同じ追加ロジックを持ったフォームBがあり、 フォームAでレコードを1件追加した時には3、4秒かかるのですが フォームBに画面遷移して1件目を追加した時には、同じ ロジック構造にもかかわらず、コンマ何秒かで処理されてしまうのです。 つまり、このプロジェクトの実行時の初回レコードの追加時にのみ 時間がかかっている感じなのです。 尚、追加の前にテーブルをクリアしていますが、 Show_Grid関数はレコード1件追加する度に呼ばれますが、 追加するレコードは事前にRec配列に蓄えられ、 配列に蓄えた文字列の数だけForループで回しています。 以上、ご教示のほど宜しくお願い致します。 |
1