/// <summary> /// Creates a cloud computation that binds a workflow to a callback. /// </summary> /// <typeparam name="TResult">Result type.</typeparam> /// <param name="workflow">Initial workflow to be executed.</param> /// <param name="continuation">Callback workflow to be executed on completion of the former.</param> /// <returns>A combined workflow.</returns> public static Cloud <TResult> Then <TResult>(this CloudAction workflow, Func <Cloud <TResult> > continuation) { return(Builder.Bind <Unit, TResult>(workflow.Body, continuation.AsFSharpFunc())); }
/// <summary> /// Try/Finally workflow. /// </summary> /// <typeparam name="TResult">Computation return type.</typeparam> /// <param name="body">The computation to execute.</param> /// <param name="finally">Finalizer.</param> public static Cloud <TResult> TryFinally <TResult>(Cloud <TResult> body, CloudAction @finally) { return(MBrace.Cloud.TryFinally(body, @finally.Body)); }
/// <summary> /// Creates a cloud computation that binds a workflow to a callback. /// </summary> /// <typeparam name="TResult">Result type.</typeparam> /// <param name="workflow">Initial workflow to be executed.</param> /// <param name="continuation">Callback workflow to be executed on completion of the former.</param> /// <returns>A combined workflow.</returns> public static Cloud <TResult> Then <TResult>(this CloudAction workflow, Func <TResult> continuation) { Func <Cloud <TResult> > f = () => continuation().AsCloud(); return(Builder.Bind <Unit, TResult>(workflow.Body, f.AsFSharpFunc())); }