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; }