private void ExitContext(ResourceHealthTracker.BudgetCostHandle context) { lock (this.syncRoot) { this.openedContexts.Pop(); ResourceHealthTracker.BudgetCostHandle newContext = this.openedContexts.Peek(); this.OpenOrCloseCostHandles(context, newContext); } }
private void EnterContext(ResourceHealthTracker.BudgetCostHandle context) { lock (this.syncRoot) { ResourceHealthTracker.BudgetCostHandle currentContext = this.openedContexts.Peek(); this.openedContexts.Push(context); this.OpenOrCloseCostHandles(currentContext, context); } }
private void OpenOrCloseCostHandles(ResourceHealthTracker.BudgetCostHandle currentContext, ResourceHealthTracker.BudgetCostHandle newContext) { if (!currentContext.IsInclusive && newContext.IsInclusive) { this.StartCharging(); return; } if (currentContext.IsInclusive && !newContext.IsInclusive) { this.StopCharging(); } }