public static void UploadTextAPM(CloudBlob blob, string text, Encoding encoding, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null) { byte[] textAsBytes = encoding.GetBytes(text); using (MemoryStream stream = new MemoryStream()) { stream.Write(textAsBytes, 0, textAsBytes.Length); if (blob.BlobType == BlobType.PageBlob) { int lastPageSize = (int)(stream.Length % 512); if (lastPageSize != 0) { byte[] padding = new byte[512 - lastPageSize]; stream.Write(padding, 0, padding.Length); } } stream.Seek(0, SeekOrigin.Begin); blob.ServiceClient.DefaultRequestOptions.ParallelOperationThreadCount = 2; using (AutoResetEvent waitHandle = new AutoResetEvent(false)) { if (blob.BlobType == BlobType.AppendBlob) { CloudAppendBlob blob1 = blob as CloudAppendBlob; IAsyncResult result = blob1.BeginCreateOrReplace( ar => waitHandle.Set(), null); waitHandle.WaitOne(); blob1.EndCreateOrReplace(result); result = blob1.BeginAppendBlock(stream, null, ar => waitHandle.Set(), null); waitHandle.WaitOne(); blob1.EndAppendBlock(result); } else if (blob.BlobType == BlobType.PageBlob) { CloudPageBlob pageBlob = blob as CloudPageBlob; IAsyncResult result = pageBlob.BeginUploadFromStream(stream, accessCondition, options, operationContext, ar => waitHandle.Set(), null); waitHandle.WaitOne(); pageBlob.EndUploadFromStream(result); } else { CloudBlockBlob blockBlob = blob as CloudBlockBlob; IAsyncResult result = blockBlob.BeginUploadFromStream(stream, accessCondition, options, operationContext, ar => waitHandle.Set(), null); waitHandle.WaitOne(); blockBlob.EndUploadFromStream(result); } } } }