private static void OnSyncCompletion(object state)
        {
            PipeOverlappedAsyncResult asyncResult = (PipeOverlappedAsyncResult)state;

            // invoke client callback
            asyncResult.AsyncCallback(asyncResult);
        }
        private static void OnAsyncCompletion(object state, bool signaled)
        {
            PipeOverlappedAsyncResult asyncResult = (PipeOverlappedAsyncResult)state;

            asyncResult.SetCompleted(false);

            if (asyncResult.AsyncCallback != null)
            {
                // invoke client callback
                asyncResult.AsyncCallback(asyncResult);
            }
        }