private HashSet <uint> GenerateWritableSegmentSet() { var result = new HashSet <uint>(); IDiaEnumSegments enumSegments = null; try { enumSegments = CreateDiaTable <IDiaEnumSegments>(); } catch (NotImplementedException) { } try { // GetEnumerator() fails in netcoreapp2.0--need to iterate without foreach. for (uint i = 0; i < (uint)enumSegments.Count; i++) { IDiaSegment segment = enumSegments.Item(i); try { if (segment.write != 0) { result.Add(segment.addressSection); } } finally { Marshal.ReleaseComObject(segment); } } } finally { if (enumSegments != null) { Marshal.ReleaseComObject(enumSegments); } } return(result); }