我们有一个使用 WCF 服务的 C# .Net 应用程序。并且该应用程序部署在我们的生产服务器中的 Windows 服务应用程序下。该模块的一部分负责为工人今天将要工作的较小区域创建形状文件((*.shp,*.dbf)并将它们发送到PDA。
要编写形状文件,我们使用第三方 dll,NetTopologySuite
GisSharpBlog.NetTopologySuite.IO.ShapefileWriter
这也在 C# 中。(我不确定它引用 的任何 dll 是否使用非托管代码。)系统可能会在一段时间内正常工作,比如一周。然后突然我们得到一个例外说
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)
此错误会导致整个服务中断并使其无法正常工作。然后我们将重新启动服务并尝试再次运行相同的数据,它会再工作一周,直到它再次崩溃。它仅在生产中和随机时间发生。我们无法找到问题的原因。
许多论坛建议这可能是因为某些非托管代码中的内存泄漏。但我们找不到哪一个。
我们还准备重写创建新形状文件的部分。请帮我解决这个问题。如果需要更多详细信息,请告诉我。提前致谢。