コード例 #1
0
        internal static IObservable <SocketAsyncEventArgs> InvokeAsync(this SocketAsyncEventArgs eventArgs, Func <SocketAsyncEventArgs, bool> invoke)
        {
            Contract.Requires(eventArgs != null);
            Contract.Requires(invoke != null);
            Contract.Ensures(Contract.Result <IObservable <SocketAsyncEventArgs> >() != null);

            var completed = eventArgs.CompletedObservable();

            var connection = completed.Connect();

            if (invoke(eventArgs))
            {
                return(completed.AsObservable());
            }
            else
            {
                connection.Dispose();

                return(eventArgs.GetResult());
            }
        }