private void AddToScope(IDisposalScope scope, ManualResetEvent syncEvent) { syncEvent.WaitOne(); for (int i = 0; i < 10000; i++) { scope.AddDisposable(new DisposableItem()); } }
private void AddToScopeWithCleanup(IDisposalScope scope, ManualResetEvent syncEvent, Action <DisposableItem> action) { syncEvent.WaitOne(); for (int i = 0; i < 10000; i++) { scope.AddDisposable(new DisposableItem(), action); } }
/// <summary> /// Add instance to disposal scope and return it /// </summary> /// <typeparam name="T"></typeparam> /// <param name="disposalScope"></param> /// <param name="value"></param> /// <returns></returns> public static T AddToDisposalScope <T>(IDisposalScope disposalScope, T value) { var disposable = value as IDisposable; if (disposable != null) { disposalScope.AddDisposable(disposable); } return(value); }
/// <summary> /// Add to disposal scope or use default /// </summary> /// <typeparam name="T"></typeparam> /// <param name="disposalScope"></param> /// <param name="tValue"></param> /// <param name="defaultValue"></param> /// <returns></returns> public static T AddToDisposableScopeOrDefault <T>(IDisposalScope disposalScope, T tValue, T defaultValue) { if (tValue != null) { var disposable = tValue as IDisposable; if (disposable != null) { disposalScope.AddDisposable(disposable); } return(tValue); } return(defaultValue); }
/// <summary> /// Check for null and then add to disposal scope /// </summary> /// <typeparam name="T"></typeparam> /// <param name="disposalScope"></param> /// <param name="context"></param> /// <param name="value"></param> /// <returns></returns> public static T CheckForNullAndAddToDisposalScope <T>(IDisposalScope disposalScope, StaticInjectionContext context, T value) { if (value == null) { throw new NullValueProvidedException(context); } var disposable = value as IDisposable; if (disposable != null) { disposalScope.AddDisposable(disposable); } return(value); }