bool HandleWriteCharacters(IAsyncResult result) { int byteCount = Math.Min(bufferLength / 4 * 3, count - count % 3); int charCount = byteCount / 3 * 4; int charOffset; if (result == null) { result = writer.BeginGetBuffer(charCount, onWriteCharacters, this); if (!result.CompletedSynchronously) { return(false); } } byte[] chars = writer.EndGetBuffer(result, out charOffset); writer.Advance(encoding.GetChars(this.buffer, this.offset, byteCount, chars, charOffset)); this.offset += byteCount; this.count -= byteCount; return(true); }