Actually for just that example you don't need any of it.
new Thread(doStuff).Start();
public static class ActionExtensions
{
public static void InvokeAsync(this Action<object> target, object context)
{
new Thread(obj => target(obj)).Start(context);
}
}
((Action<object>) (Console.WriteLine)).InvokeAsync("Hello, World");