WCFサービスを使用するC#.Netアプリケーションがあります。そして、アプリケーションは、Windowsサービスアプリケーションの下で本番サーバーにデプロイされます。モジュールの一部は、作業者が今日作業するより小さな領域のシェープファイル((* .shp、* .dbf)を作成し、それらをPDAに送信する役割を果たします。
シェープファイルを作成するには、サードパーティのdllであるNetTopologySuiteを使用します。
GisSharpBlog.NetTopologySuite.IO.ShapefileWriter
これもC#にあります。(参照するdllがアンマネージコードを使用しているかどうかはわかりません。) システムはしばらくの間、たとえば1週間は正常に動作する可能性があります。すると突然例外が発生します
Attempted to read or write protected memory.
This is often an indication that other memory is corrupt.
ジオメトリコレクションをシェープファイルに書き込むWriteメソッドから。
sfw.Write(FileName, new GeometryCollection(gc.ToArray()));
(GeometryCollectionもサードパーティのdll、GeoAPI.dllからのものです)
このエラーにより、サービス全体がダウンし、機能しなくなります。次に、サービスを再起動して同じデータを再度実行しようとします。再びクラッシュするまで、さらに1週間は正常に機能します。これは、本番環境でランダムな時間にのみ発生します。問題の原因を特定できませんでした。
多くのフォーラムは、管理されていないコードのメモリリークが原因である可能性があることを示唆しています。しかし、どれが見つかりませんでした。
また、新しいシェープファイルを作成する部分を書き直す準備ができています。この問題の解決にご協力ください。詳細が必要な場合はお知らせください。前もって感謝します。