0

wpfのdatagridに入力されているおそらく50,000エントリのリストがあります。次に、リスト内のデータをテキストまたはできればCSVのファイルに保存します。リストが大きすぎるので。単純なテキストファイルの書き込みや、データグリッドからクリップボードにコンテンツをコピーしてから文字列に戻し、次にStreamReaderを使用してその文字列をファイルにコピーする方法など、実装したメソッドに問題があります。バックグラウンドワーカーでも約4〜5分かかります。

巨大なリストをすばやくファイルに保存する方法はありますか?

WPFでDataGridを使用しています

コード

 dataGrid1.SelectAllCells();
            dataGrid1.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
            ApplicationCommands.Copy.Execute(null, dataGrid1);
   String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);


///Never reach to step Below thread stays on above line
                dataGrid1.UnselectAllCells();
                Clipboard.Clear();
                StreamWriter file = new System.IO.StreamWriter(SavePageRankToPDF.FileName);
                file.WriteLine(result);
                file.Close();
4

2 に答える 2

2

クリップボードを使用する代わりに、データテーブルを繰り返し処理してcsvファイルを作成してみませんか。

アップデート

ここではいくつかの例を示します。

DataTableをCSVストリームに変換する

DataSet\DataTableをCSVに変換する

于 2011-03-22T20:49:43.730 に答える
0

役立つことの1つは、表示目的で使用するときにすべてのデータをデータグリッドにロードしないことです。ページングを使用することをお勧めします。計算または表示の目的で必要になるデータグリッドにのみデータをロードします。ユーザーがより多くのデータを表示/使用したい場合は、データソースに戻って、より多くのデータを取得してください。アプリの実行速度が上がるだけでなく、使用するメモリも大幅に少なくなります。

于 2011-03-22T20:08:52.593 に答える