static T GetOrRegisterHolder() { if (ms_key == null) { return(default(T)); } var funcPtr = default(IntPtr); if (InstanceGetters.TryGet(ms_key, out funcPtr)) { using (InstanceGetters.DisableProcessing()) return(GetHolderCore(ms_t, funcPtr)); } else { var funcPtrTmp = default(IntPtr); using (InstanceGetters.DisableProcessing()) funcPtrTmp = GetFunctionPointerCore(ms_t); while (!InstanceGetters.GetOrAdd(ms_key, funcPtrTmp, out funcPtr)) { ; } using (InstanceGetters.DisableProcessing()) return(GetHolderCore(ms_t, funcPtr)); } }
static bool TryGetHolder(out T holder) { holder = default(T); if (ms_key == null) { return(false); } var funcPtr = default(IntPtr); if (!InstanceGetters.TryGet(ms_key, out funcPtr)) { holder = null; return(false); } else { using (InstanceGetters.DisableProcessing()) holder = GetHolderCore(ms_t, funcPtr); return(true); } }