コード例 #1
0
 static bool AsyncWriteTest(MemoryStream ms, Encoding encoding, MyStreamProvider myStreamProvider)
 {
     XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(ms);
     writer.WriteStartElement("Root");
     Task writeValueAsynctask = writer.WriteValueAsync(myStreamProvider);
     writeValueAsynctask.Wait();
     Assert.True(myStreamProvider.StreamReleased, "Error, stream not released.");
     writer.WriteEndElement();
     writer.Flush();
     return true;
 }
コード例 #2
0
            internal SerializeAsyncResult(StreamFormatter streamFormatter, XmlDictionaryWriter writer, object[] parameters, object returnValue,
                                          AsyncCallback callback, object state)
                : base(callback, state)
            {
                this.streamFormatter = streamFormatter;
                this.writer          = writer;
                bool completeSelf = true;

                Stream       streamValue = streamFormatter.GetStreamAndWriteStartWrapperIfNecessary(writer, parameters, returnValue);
                IAsyncResult result      = writer.WriteValueAsync(new OperationStreamProvider(streamValue)).AsAsyncResult(PrepareAsyncCompletion(handleEndSerialize), this);

                completeSelf = SyncContinue(result);

                // Note:  The current task implementation hard codes the "IAsyncResult.CompletedSynchronously" property to false, so this fast path will never
                // be hit, and we will always hop threads.  CSDMain #210220
                if (completeSelf)
                {
                    Complete(true);
                }
            }
コード例 #3
0
    static bool AsyncWriteTest(MemoryStream ms, Encoding encoding, MyStreamProvider myStreamProvider)
    {
        XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(ms);

        writer.WriteStartElement("Root");
        Task writeValueAsynctask = writer.WriteValueAsync(myStreamProvider);

        writeValueAsynctask.Wait();
        if (myStreamProvider.StreamReleased)
        {
            Console.WriteLine("Ok, stream released right after AsyncWriteValue");
        }
        else
        {
            Console.WriteLine("Error, stream not released after AsyncWriteValue");
            return(false);
        }
        writer.WriteEndElement();
        writer.Flush();
        return(true);
    }