Diferencia entre delegate.BeginInvoke y el uso de hilos de ThreadPool en C #

En C # hay alguna diferencia entre usar un delegado para hacer un trabajo asincrónico (llamar a BeginInvoke ()) y usar un hilo ThreadPool como se muestra a continuación

<code>public void asynchronousWork(object num)
    {
        //asynchronous work to be done
        Console.WriteLine(num);
    }

 public void test()
    {
        Action<object> myCustomDelegate = this.asynchronousWork;
        int x = 7;

        //Using Delegate
        myCustomDelegate.BeginInvoke(7, null, null);

        //Using Threadpool
        ThreadPool.QueueUserWorkItem(new WaitCallback(asynchronousWork), 7);
        Thread.Sleep(2000);
    }
</code>

Editar:
BeginInvoke se asegura de que se use un subproceso del grupo de subprocesos para ejecutar el código asíncrono, así que ¿hay alguna diferencia?

Respuestas a la pregunta(1)

Su respuesta a la pregunta