private void OnNotify()
        {
            Span <Interop.Rio.RIORESULT> results = stackalloc Interop.Rio.RIORESULT[32];

            do
            {
                lock (_completionQueue)
                {
                    Interop.Rio.Notify(_completionQueue);
                }

                _waitHandle.WaitOne();

                int dequeued;

                do
                {
                    lock (_completionQueue)
                    {
                        dequeued = Interop.Rio.DequeueCompletions(_completionQueue, results);
                    }

                    for (int i = 0; i < dequeued; ++i)
                    {
                        ref Interop.Rio.RIORESULT result = ref results[i];
                        RegisteredOperationContext.Complete(result.Status, result.BytesTransferred, new IntPtr(result.RequestContext));
                    }
                }while (dequeued != 0);
            } while (!_disposing);
        }
        private void OnNotify()
        {
            Span <Interop.Rio.RIORESULT> results = stackalloc Interop.Rio.RIORESULT[32];
            int dequeued;

            do
            {
                lock (_completionQueue)
                {
                    dequeued = Interop.Rio.DequeueCompletions(_completionQueue, results);
                }

                Console.WriteLine($"Dequeued {dequeued} notifications.");

                for (int i = 0; i < dequeued; ++i)
                {
                    ref Interop.Rio.RIORESULT result = ref results[i];
                    RegisteredOperationEventArgs.Complete(result.Status, result.BytesTransferred, new IntPtr(result.RequestContext));
                }
            }while (dequeued != 0);

            Notify();
        }