/// <summary> /// Execute a user defined Lambda against an IMessageContext /// and wait for all activity to end /// </summary> /// <param name="action"></param> /// <returns></returns> public async Task <ITrackedSession> ExecuteAndWait(Func <IMessageContext, Task> action) { _session.Execution = action; await _session.ExecuteAndTrack(); return(_session); }
/// <summary> /// Executes an action and waits until the execution of all messages and all cascading messages /// have completed /// </summary> /// <param name="runtime"></param> /// <param name="action"></param> /// <returns></returns> public static async Task <ITrackedSession> ExecuteAndWait(this IHost host, Func <IMessageContext, Task> action, int timeoutInMilliseconds = 5000) { TrackedSession session = new TrackedSession(host) { Timeout = timeoutInMilliseconds.Milliseconds(), Execution = action }; await session.ExecuteAndTrack(); return(session); }