void IAppDomainHelper.DoCallback(IntPtr pUnkAD, IntPtr pfnCallbackCB, IntPtr data)
 {
     CallbackWrapper wrapper = new CallbackWrapper(pfnCallbackCB, data);
     if (this._ad != AppDomain.CurrentDomain)
     {
         this._ad.DoCallBack(new CrossAppDomainDelegate(wrapper.ReceiveCallback));
     }
     else
     {
         wrapper.ReceiveCallback();
     }
 }
        void IAppDomainHelper.DoCallback(IntPtr pUnkAD, IntPtr pfnCallbackCB, IntPtr data)
        {
            CallbackWrapper wrapper = new CallbackWrapper(pfnCallbackCB, data);

            if (this._ad != AppDomain.CurrentDomain)
            {
                this._ad.DoCallBack(new CrossAppDomainDelegate(wrapper.ReceiveCallback));
            }
            else
            {
                wrapper.ReceiveCallback();
            }
        }
Пример #3
0
        /// <include file='doc\ExportUtil.uex' path='docs/doc[@for="AppDomainHelper.IAppDomainHelper.DoCallback"]/*' />
        void IAppDomainHelper.DoCallback(IntPtr pUnkAD, IntPtr pfnCallbackCB, IntPtr data)
        {
#if _DEBUG
            AppDomain ad = (AppDomain)Marshal.GetObjectForIUnknown(pUnkAD);
            DBG.Assert(ad == _ad, "Call to AppDomainHelper.DoCallback for wrong AD");
#endif
            // DoCallback:
            CallbackWrapper wrap = new CallbackWrapper(pfnCallbackCB, data);

            if (_ad != AppDomain.CurrentDomain)
            {
                DBG.Info(DBG.Pool, "AppDomainHelper.DoCallback: the current domain differs from the passed domain.");
                _ad.DoCallBack(new CrossAppDomainDelegate(wrap.ReceiveCallback));
                DBG.Info(DBG.Pool, "AppDomainHelper.DoCallback: done with callback.");
            }
            else
            {
                DBG.Info(DBG.Pool, "AppDomainHelper.DoCallback: the current domain matches.");
                wrap.ReceiveCallback();
            }
        }