コード例 #1
0
        public async Task WriteRandom()
        {
            var    isAborted    = false;
            Action abortRequest = () => isAborted = true;

            using (var ms1 = new MemoryStream())
            {
                using (var ms2 = new MemoryStream())
                {
                    using (var writeOnlyStream = new WriteOnlyResponseStream(abortRequest))
                    {
                        var random = new Random();
                        for (var i = 0; i < 10; i++)
                        {
                            var buffer = ArrayPool <byte> .Shared.Rent(random.Next(50000));

                            random.NextBytes(buffer);
                            await writeOnlyStream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false);

                            await ms1.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false);

                            ArrayPool <byte> .Shared.Return(buffer);
                        }

                        await writeOnlyStream.CopyToAsync(ms2).ConfigureAwait(false);

                        ms1.Position = 0;
                        ms2.Position = 0;
                        CompareStreams(ms1, ms2);
                    }
                }
            }

            Assert.True(isAborted);
        }
コード例 #2
0
        private async Task <byte[]> GetBuffer(WriteOnlyResponseStream writeOnlyStream)
        {
            using (var ms = new MemoryStream())
            {
                await writeOnlyStream.CopyToAsync(ms).ConfigureAwait(false);

                return(ms.ToArray());
            }
        }