public IntPtr GetDisposeDelegate()
        {
            if (IntPtr.Zero == _disposeDelegatePointer)
            {
                lock (_delegatelock) {
                    if (IntPtr.Zero == _disposeDelegatePointer)
                    {
                        DisposeFunctionDelegate d = new DisposeFunctionDelegate(DisposeHandler);
                        if (null != d)
                        {
                            IntPtr p = Marshal.GetFunctionPointerForDelegate(d);
                            if (IntPtr.Zero != p)
                            {
                                Thread.MemoryBarrier();
                                _disposeDelegate        = d;
                                _disposeDelegatePointer = p;
                            }
                        }
                    }
                }
            }

            return(_disposeDelegatePointer);
        }
 public IntPtr GetDisposeDelegate()
 {
     if (IntPtr.Zero == _disposeDelegatePointer)
     {
         lock (_delegatelock)
         {
             if (IntPtr.Zero == _disposeDelegatePointer)
             {
                 DisposeFunctionDelegate d = new DisposeFunctionDelegate(PipelineRuntime.DisposeHandler);
                 if (d != null)
                 {
                     IntPtr functionPointerForDelegate = Marshal.GetFunctionPointerForDelegate(d);
                     if (IntPtr.Zero != functionPointerForDelegate)
                     {
                         Thread.MemoryBarrier();
                         _disposeDelegate        = d;
                         _disposeDelegatePointer = functionPointerForDelegate;
                     }
                 }
             }
         }
     }
     return(_disposeDelegatePointer);
 }
 public IntPtr GetDisposeDelegate()
 {
     if (IntPtr.Zero == _disposeDelegatePointer)
     {
         lock (_delegatelock)
         {
             if (IntPtr.Zero == _disposeDelegatePointer)
             {
                 DisposeFunctionDelegate d = new DisposeFunctionDelegate(PipelineRuntime.DisposeHandler);
                 if (d != null)
                 {
                     IntPtr functionPointerForDelegate = Marshal.GetFunctionPointerForDelegate(d);
                     if (IntPtr.Zero != functionPointerForDelegate)
                     {
                         Thread.MemoryBarrier();
                         _disposeDelegate = d;
                         _disposeDelegatePointer = functionPointerForDelegate;
                     }
                 }
             }
         }
     }
     return _disposeDelegatePointer;
 }
        public IntPtr GetDisposeDelegate() {
            if (IntPtr.Zero == _disposeDelegatePointer) {
                lock (_delegatelock) {
                    if (IntPtr.Zero == _disposeDelegatePointer) {
                        DisposeFunctionDelegate d = new DisposeFunctionDelegate(DisposeHandler);
                        if (null != d) {
                            IntPtr p = Marshal.GetFunctionPointerForDelegate(d);
                            if (IntPtr.Zero != p) {
                                Thread.MemoryBarrier();
                                _disposeDelegate = d;
                                _disposeDelegatePointer = p;
                            }
                        }
                    }
                }
            }

            return _disposeDelegatePointer;
        }