/// <summary> /// Asynchronously deserializes object from the stream and returns it. /// </summary> /// <param name="stream"></param> /// <returns></returns> public static async Task <SerializationObjectWrapper> DeserializeAsync(Stream stream) { int length = 0; if (!await Task.Factory.StartNew( () => Serializer.TryReadLengthPrefix(stream, PrefixStyle.Base128, out length), TaskCreationOptions.DenyChildAttach)) { throw new ArgumentException(); } var buffer = new byte[length]; await stream.ReadAsync(buffer, 0, buffer.Length); using (MemoryStream ms = new MemoryStream()) { await ms.WriteAsync(buffer, 0, buffer.Length); ms.Position = 0; SerializationObjectWrapper wrapper = Serializer.Deserialize <SerializationObjectWrapper>(ms); return(wrapper); } }
public static SerializationObjectWrapper Deserialize(Stream stream) { int length; if (Serializer.TryReadLengthPrefix(stream, PrefixStyle.Base128, out length)) { var buffer = new byte[length]; stream.Read(buffer, 0, buffer.Length); using (MemoryStream ms = new MemoryStream()) { ms.Write(buffer, 0, buffer.Length); ms.Position = 0; SerializationObjectWrapper wrapper = Serializer.Deserialize <SerializationObjectWrapper>(ms); return(wrapper); } } throw new ArgumentException(); }