public Task <long> WriteBlockAsync(IAvroWriterBlock <T> block) { if (block == null) { throw new ArgumentNullException("block"); } var taskSource = new TaskCompletionSource <long>(); block.Flush(); long result = 0; lock (this.locker) { if (!this.isHeaderWritten) { // This is never used. result = this.WriteHeader(); } if (block.ObjectCount != 0) { // Replace this with a MemoryStream, as we will be limited to the size of an Azure Blob Block using (var stream = new MemoryStream()) { using (var encoder = new BinaryEncoder(stream, true)) { encoder.Encode(block.ObjectCount); encoder.Encode(block.Content); encoder.EncodeFixed(this.header.SyncMarker); stream.Seek(0, SeekOrigin.Begin); this.WriteStreamToBlobAsync(stream); } } } } taskSource.SetResult(result); return(taskSource.Task); }