コード例 #1
0
 internal void IncrementSubscribe(IHandlerHolderMarker handlerHolder, IDisposable subscription)
 {
     Interlocked.Increment(ref subscribeCount);
     if (options.EnableCaptureStackTrace)
     {
         AddStackTrace(handlerHolder, subscription);
     }
     dirty = true;
 }
コード例 #2
0
 internal void RemoveTargetDiagnostics(IHandlerHolderMarker targetHolder, int removeCount)
 {
     Interlocked.Add(ref subscribeCount, -removeCount);
     if (enableCaptureStackTrace)
     {
         lock (gate)
         {
             capturedStackTraces.Remove(targetHolder);
         }
     }
 }
コード例 #3
0
        void RemoveStackTrace(IHandlerHolderMarker handlerHolder, IDisposable subscription)
        {
            lock (gate)
            {
                if (!capturedStackTraces.TryGetValue(handlerHolder, out var dict))
                {
                    return;
                }

                dict.Remove(subscription);
            }
        }
コード例 #4
0
        void AddStackTrace(IHandlerHolderMarker handlerHolder, IDisposable subscription)
        {
            lock (gate)
            {
                if (!capturedStackTraces.TryGetValue(handlerHolder, out var dict))
                {
                    dict = new Dictionary <IDisposable, StackTraceInfo>();
                    capturedStackTraces[handlerHolder] = dict;
                }

                dict.Add(subscription, new StackTraceInfo(new StackTrace(true)));
            }
        }