public void Post(WindowsMessageLoop loop)
        {
            if (loop == null)
            {
                throw new ArgumentNullException(nameof(loop));
            }

            this.Post(loop.NativeThreadId);
        }
        internal WindowsMessageLoopOperation(WindowsMessageLoop messageLoop, int handle, Delegate action,
                                             object[] parameters)
        {
            this.SyncRoot = new object();

            this.MessageLoop = messageLoop;
            this.Handle      = handle;
            this.Action      = action;
            this.Parameters  = parameters;

            this.State         = WindowsMessageLoopOperationState.Waiting;
            this.Result        = null;
            this.Exception     = null;
            this.OperationDone = new ManualResetEvent(false);
        }