Example #1
0
        static void BeginRead(this Stream s, Byte[] buffer, OnReadFunc onRead, OnCompleteFunc onComplete, Func <bool> IsDisposed)
        {
            if (IsDisposed())
            {
                return;
            }

            AsyncCallback callback = ar => {
                var ss        = ar.AsyncState as Stream;
                var readCount = ss.EndRead(ar);
                if (readCount == 0)
                {
                    if (onComplete != null)
                    {
                        onComplete();
                    }
                    return;
                }

                onRead(buffer, readCount);

                BeginRead(ss, buffer, onRead, onComplete, IsDisposed);
            };

            s.BeginRead(buffer, 0, buffer.Length, callback, s);
        }
Example #2
0
        public static IDisposable BeginRead(this Stream s, Byte[] buffer, OnReadFunc onRead, OnCompleteFunc onComplete = null)
        {
            var disposable = new Disposable();

            s.BeginRead(buffer, onRead, onComplete, () => disposable.IsDisposed);
            return(disposable);
        }