sibartlett / Geo

A geospatial library for .NET
https://www.nuget.org/packages/Geo/
GNU Lesser General Public License v3.0
179 stars 39 forks source link

Async APIs #48

Open bdovaz opened 4 years ago

bdovaz commented 4 years ago

Please, can you add async APIs for serialization/deserialization?

For now I have solved it myself inheriting from the class for my specific case:

public class Gpx11SerializerAsync : Gpx11Serializer {

        public async Task<GpsData> DeserializeAsync(Stream stream) {
            using (var streamReader = new StreamReader(stream)) {
                var data = await streamReader.ReadToEndAsync();
                var xmlSerializer = new XmlSerializer(typeof(GpxFile));

                using (var stringReader = new StringReader(data)) {
                    var doc = (GpxFile)xmlSerializer.Deserialize(stringReader);
                    return DeSerialize(doc);
                }
            }
        }

    }

It would be nice if it worked in all cases through GpsData:

https://github.com/sibartlett/Geo/blob/master/Geo/Gps/GpsData.cs#L73

Something like:

public static async Task<GpsData> ParseAsync(Stream stream);