示例#1
0
        /// <summary>
        /// Add termination resource with <c>kind == ITerminationHandler</c> that will be invoked when lifetime termination starts
        /// (i.e. <see cref="LifetimeDefinition.Terminate"/> is called, <see cref="ExecutingCount"/> became zero, so status is set to <see cref="LifetimeStatus.Terminating"/>).
        /// Resources invocation order: LIFO
        /// All errors are logger by <see cref="ILog"/>  so termination of each resource is isolated.
        ///
        /// Method returns do nothing and return `false` if <see cref="Status"/> &ge; <see cref="LifetimeStatus.Terminating"/>.
        /// </summary>
        /// <param name="disposable">Action to invoke on termination</param>
        /// <returns><c>true</c> if resource added - only status &le; <see cref="LifetimeStatus.Canceling"/>. <c>false</c> if resource's not added - status &ge; <see cref="LifetimeStatus.Terminating"/> </returns>

        [PublicAPI]          public bool TryOnTermination([NotNull] ITerminationHandler disposable) => Definition.TryAdd(disposable);
示例#2
0
 /// <summary>
 /// Add termination resource <c>kind == ITerminationHandler</c> that will be invoked by calling <see cref="ITerminationHandler.OnTermination"/> when lifetime termination start
 /// (i.e. <see cref="LifetimeDefinition.Terminate"/> is called, <see cref="ExecutingCount"/> became zero, so status is set to <see cref="LifetimeStatus.Terminating"/>).
 /// Resources invocation order: LIFO
 /// All errors are logged by <see cref="ILog"/> so termination of each resource is isolated.
 ///
 /// Method throws <see cref="InvalidOperationException"/> if <see cref="Status"/> &ge; <see cref="LifetimeStatus.Terminating"/>.
 /// The reason is that lifetime is in inconsistent partly terminated state.
 /// </summary>
 /// <param name="terminationHandler">termination resources whose <see cref="ITerminationHandler.OnTermination"/> method is invoked on termination</param>
 /// <returns>this lifetime</returns>
 [PublicAPI] public Lifetime OnTermination([NotNull] ITerminationHandler terminationHandler)
 {
     Definition.OnTermination(terminationHandler); return(this);
 }