/// <summary> /// Run a synchronous function on a STA background thread. /// </summary> /// <typeparam name="T">Type of the return value</typeparam> /// <param name="action">Function to run</param> /// <returns>The return value of the underlying method.</returns> public static Task Run <T>(this IStaWorker worker, Func <T> action) => worker.Run(() => Task.FromResult(action()));
/// <summary> /// Run a synchronous action on a STA background thread. /// </summary> /// <param name="action">Synchronous action to run</param> /// <returns>A task representing completion of the synchronous action on the other thread.</returns> public static Task Run(this IStaWorker worker, Action action) => worker.Run(() => { action(); return(Task.FromResult(1)); });
/// <summary> /// Run an async action on a STA background thread. /// </summary> /// <param name="action">async action to run</param> /// <returns>A task representing the underlying method</returns> public static Task Run(this IStaWorker worker, Func <Task> action) => worker.Run(async() => { await action(); return(1); });