private long WriteSingleContent(Stream stream, IHttpContent content, Action <UploadStatusMessage> uploadStatusCallback, int blockSize, long overallContentLength, long totalContentUploadedOverall) { long contentLength = content.GetContentLength(); int contentUploadedThisRound = 0; int totalContentUploaded = 0; byte[] requestBuffer = new byte[blockSize]; Stream contentStream = content.ReadAsStream(); while (totalContentUploaded != contentLength) { contentUploadedThisRound = 0; int read = 0; while ((read = contentStream.Read(requestBuffer, read, blockSize - read)) > 0) { contentUploadedThisRound += read; } if (contentUploadedThisRound > 0) { stream.Write(requestBuffer, 0, contentUploadedThisRound); } totalContentUploaded += contentUploadedThisRound; totalContentUploadedOverall += contentUploadedThisRound; RaiseUploadStatusCallback(uploadStatusCallback, overallContentLength, contentUploadedThisRound, totalContentUploadedOverall); } return(totalContentUploaded); }