ArcViewと統合するArcGISのカスタムツールを開発中です。このツールはC#を使用して開発され、基本的にSQLデータベースに接続し、ローカルデータ構造にデータをフェッチし、統計分析を行い、その結果を新しいレイヤーとして表示します。ArcGIS C#のメモリ割り当てのクラッシュ
このコードの実行中にクラッシュが発生します。
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ランタイムの組み込み保護について知っている人がいますが、これにより特定のメモリ量以上の割り当てができなくなる可能性があります。
ありがとうございました!
このコードでは、ArcGISに関連するものはありません。それがArcGISの問題だとあなたはどうして確信していますか?あなたが得ている正確なエラーメッセージは何ですか? –
Throwされている例外のToString()を表示することができれば助けになります。 –
次のメッセージでArcGISからクラッシュしました。 「ArcGIS Desktopに重大なアプリケーションエラーが発生し、処理を続行できません」 エラーメッセージを送信するように促すメッセージはありません。私は "ダンプ"ファイルを取得しますが、それは使用可能に見えません。 –