コード例 #1
0
            public GetBufferAsyncResult(int count, XmlStreamNodeWriter writer, AsyncCallback callback, object state)
                : base(callback, state)
            {
                this.count  = count;
                this.writer = writer;
                int bufferOffset = writer.offset;

                bool completeSelf = false;

                if (bufferOffset + count <= bufferLength)
                {
                    this.offset  = bufferOffset;
                    completeSelf = true;
                }
                else
                {
                    IAsyncResult result = writer.BeginFlushBuffer(PrepareAsyncCompletion(onComplete), this);
                    completeSelf = SyncContinue(result);
                }

                if (completeSelf)
                {
                    this.Complete(true);
                }
            }
コード例 #2
0
            bool HandleFlushBuffer(IAsyncResult result)
            {
                if (result == null)
                {
                    result = writer.BeginFlushBuffer(PrepareAsyncCompletion(onHandleFlushBufferComplete), this);
                    if (!result.CompletedSynchronously)
                    {
                        return(false);
                    }
                }

                writer.EndFlushBuffer(result);
                return(HandleWrite(null));
            }