/// <summary> /// Activates sources of the time source and provides an object that deactivates them on dispose. /// </summary> protected IDisposable ObtainSourceActiveState() { using (sync.HighPriority) { foreach (var slave in handles.All) { slave.SourceSideActive = true; slave.RequestStart(); } } var result = new DisposableWrapper(); result.RegisterDisposeAction(() => { using (sync.HighPriority) { foreach (var slave in handles.All) { slave.SourceSideActive = false; } } }); return(result); }
public static IDisposable ObtainSinkInactiveState(this ITimeSink @this) { var result = new DisposableWrapper(); @this.TimeHandle.SinkSideActive = false; result.RegisterDisposeAction(() => @this.TimeHandle.SinkSideActive = true); return(result); }
public static IDisposable TraceRegion(this object o, string message = null, [CallerLineNumber] int lineNumber = 0, [CallerMemberName] string caller = null, [CallerFilePath] string fileName = null) { var result = new DisposableWrapper(); Trace(o, $"Entering: {message}", lineNumber, caller, fileName); result.RegisterDisposeAction(() => Trace(o, $"Leaving: {message}. Entered", lineNumber, caller, fileName)); return(result); }