ArcView と統合する ArcGIS 用のカスタム ツールに取り組んでいます。このツールは C# を使用して開発されており、基本的に SQL データベースに接続し、データをローカル データ構造にフェッチし、大量の統計分析を実行してから、結果を新しいレイヤーとして表示します。
このコードの実行中にクラッシュが発生します。
LinkedList<SegmentDbRecord> segmentData = new LinkedList<SegmentDbRecord>();
while( dataReader.Read() )
{
SegmentDbRecord record = new SegmentDbRecord();
record.first_stop_id = dataReader.GetInt32(0);
record.first_stopway = dataReader.GetString(1);
record.first_stopway_X = dataReader.GetString(2);
record.second_stop_id = dataReader.GetInt32(3);
record.second_stopway = dataReader.GetString(4);
record.second_stopway_X = dataReader.GetString(5);
record.segment_start = Tools.timeToFloat((DateTime)dataReader.GetValue(6));
record.segment_finish = Tools.timeToFloat((DateTime)dataReader.GetValue(7));
record.stop1_long = dataReader.GetFloat(8);
record.stop1_lat = dataReader.GetFloat(9);
record.stop2_long = dataReader.GetFloat(10);
record.stop2_lat = dataReader.GetFloat(11);
record.max_speed = dataReader.GetInt32(12);
record.avg_speed = dataReader.GetInt32(13);
record.route_hnd = dataReader.GetInt32(14);
record.seq_1 = dataReader.GetInt32(15);
record.seq_2 = dataReader.GetInt32(16);
record.route_name = dataReader.GetString(17);
segmentData.AddFirst(record);
}
この段階では、クエリの結果をリンク リストに保存しているだけです。メモリの割り当て中にクラッシュが発生したと確信していますが、まだ十分なメモリが残っており、クエリがそれほど大きなデータセットを返していないことはわかっています。新しい「レコード」を割り当てる単純なループを実行すると、非常に速くクラッシュします。ArcGIS ランタイムに組み込まれている保護機能によって、一定量以上のメモリを割り当てることができないことを知っている人はいますか?
ありがとうございました !