Ejemplo n.º 1
0
        private static unsafe object CheckStaticClassConstructionReturnThreadStaticBase(TypeManagerSlot *pModuleData, int typeTlsIndex, StaticClassConstructionContext *context)
        {
            object threadStaticBase = ThreadStatics.GetThreadStaticBaseForType(pModuleData, typeTlsIndex);

            EnsureClassConstructorRun(context);
            return(threadStaticBase);
        }
Ejemplo n.º 2
0
        public IDisposable Use(T value)
        {
            ThreadStaticValue old;

            ThreadStatics.TryGetValue(this, out old);
            return(ThreadStatics[this] = new ThreadStaticValue(this, value, old));
        }
Ejemplo n.º 3
0
 private void DisposeCurrentScope(ThreadStaticValue valueToDispose)
 {
     valueToDispose.MarkAsDisposed();
     if (valueToDispose.previous == null)
     {
         ThreadStatics.Remove(this);
     }
     else
     {
         ThreadStatics[this] = valueToDispose.previous;
     }
 }
Ejemplo n.º 4
0
 private void DisposeScope(ThreadStaticValue valueToDispose)
 {
     if (Thread.CurrentThread.ManagedThreadId != valueToDispose.threadId)
     {
         throw new DisposingOnDifferentThreadToCreation();                 // ncrunch: no coverage
     }
     ThreadStatics.TryGetValue(this, out innerMost);
     while (innerMost != valueToDispose)
     {
         DisposeInnerMostScopes();
     }
     DisposeCurrentScope(valueToDispose);
 }