| 1234567891011121314151617181920212223242526272829303132 | using System.IO;using System.Threading;using System.Threading.Tasks;namespace MediaBrowser.Api.Playback{    public class EndlessStreamCopy    {        public async Task CopyStream(Stream source, Stream target, CancellationToken cancellationToken)        {            long position = 0;                        while (!cancellationToken.IsCancellationRequested)            {                await source.CopyToAsync(target, 81920, cancellationToken).ConfigureAwait(false);                var fsPosition = source.Position;                var bytesRead = fsPosition - position;                //Logger.Debug("Streamed {0} bytes from file {1}", bytesRead, path);                if (bytesRead == 0)                {                    await Task.Delay(100, cancellationToken).ConfigureAwait(false);                }                position = fsPosition;            }        }    }}
 |