public IScheduler GetCurrentScheduler() { MathContext ctx = MathContext.Current; Guid currentId = ctx.InstanceId; lock (_schedulerStack) { IScheduler scheduler; if (_schedulerStack.TryGetValue(ctx.InstanceId, out scheduler)) { return(scheduler); } while (ctx.HasParent) { ctx = ctx.ParentContext; if (_schedulerStack.TryGetValue(ctx.InstanceId, out scheduler)) { return(scheduler); } } scheduler = new ImmediateScheduler(); _schedulerStack.Add(currentId, scheduler); return(scheduler); } }
public IScheduler GetCurrentScheduler() { MathContext ctx = MathContext.Current; Guid currentId = ctx.InstanceId; lock(_schedulerStack) { IScheduler scheduler; if(_schedulerStack.TryGetValue(ctx.InstanceId, out scheduler)) return scheduler; while(ctx.HasParent) { ctx = ctx.ParentContext; if(_schedulerStack.TryGetValue(ctx.InstanceId, out scheduler)) return scheduler; } scheduler = new ImmediateScheduler(); _schedulerStack.Add(currentId, scheduler); return scheduler; } }