Beispiel #1
0
        /// <summary>
        /// Attaches an event handler to the COM object.
        /// </summary>
        /// <param name="eventName">
        /// The name of the event.
        /// </param>
        /// <param name="handler">
        /// The event handler delegate.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="eventName"/> is <see langword="null"/></para>
        /// <para>-or-</para>
        /// <para><paramref name="handler"/> is <see langword="null"/></para>
        /// </exception>
        private void AttachEventHandler(string eventName, Delegate handler)
        {
            if (eventName == null || eventName.Length == 0)
            {
                throw new ArgumentNullException("eventName");
            }
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }

            lock (this)
            {
                if (_ComEventProvider == null)
                {
                    _ComEventProvider = new ComEventProvider(_COMObject, _InterceptType, this);
                }

                _ComEventProvider.AddEventHandler(eventName, handler);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Release the COM reference
        /// </summary>
        /// <param name="disposing">
        /// <see langword="true"/> if this was called from the
        /// <see cref="IDisposable"/> interface.
        /// </param>
        private void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (this._ComEventProvider != null)
                {
                    this._ComEventProvider.Dispose();
                    this._ComEventProvider = null;
                }
            }

            if (this._COMObject != null)
            {
                if (Marshal.IsComObject(this._COMObject))
                {
                    while (Marshal.ReleaseComObject(this._COMObject) > 0)
                    {
                        ;
                    }
                }

                this._COMObject = null;
            }
        }