/// <summary> /// Asyncronously read a file /// </summary> /// <param name="path">file path</param> /// <returns>BinaryReader containing file or null</returns> /// <seealso cref="BinaryReader"/> public static async Task <MemoryStreamReader> ReadAsync(string path) { MemoryStreamReader result = new MemoryStreamReader(); using (FileStream sourceStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, useAsync: true)) { byte[] buffer = new byte[4096]; int numRead; while ((numRead = await sourceStream.ReadAsync(buffer, 0, buffer.Length)) != 0) { result.Write(buffer, 0, numRead); } } result.Seek(0, SeekOrigin.Begin); return(result); }