public IntPtr GetPrincipalDelegate() { if (IntPtr.Zero == _principalDelegatePointer) { lock (_delegatelock) { if (IntPtr.Zero == _principalDelegatePointer) { PrincipalFunctionDelegate d = new PrincipalFunctionDelegate(GetManagedPrincipalHandler); if (null != d) { IntPtr p = Marshal.GetFunctionPointerForDelegate(d); if (IntPtr.Zero != p) { Thread.MemoryBarrier(); _principalDelegate = d; _principalDelegatePointer = p; } } } } } return(_principalDelegatePointer); }
public IntPtr GetPrincipalDelegate() { if (IntPtr.Zero == _principalDelegatePointer) { lock (_delegatelock) { if (IntPtr.Zero == _principalDelegatePointer) { PrincipalFunctionDelegate d = new PrincipalFunctionDelegate(GetManagedPrincipalHandler); if (null != d) { IntPtr p = Marshal.GetFunctionPointerForDelegate(d); if (IntPtr.Zero != p) { Thread.MemoryBarrier(); _principalDelegate = d; _principalDelegatePointer = p; } } } } } return _principalDelegatePointer; }