Utiliza el grupo de subprocesos, definitivamente.
estoy blowed si puedo encontrar la documentada de todos modos, que conste ... this MSDN article indica que cualquier de devolución de llamada que especifique se ejecuta en un hilo de rosca de la piscina ...
Aquí hay un código de confirmarlo - pero por supuesto que no confirma que se trata de garantizado a suceder de esa manera ...
using System;
using System.Threading;
public class Test
{
static void Main()
{
Action x =() =>
Console.WriteLine(Thread.CurrentThread.IsThreadPoolThread);
x(); // Synchronous; prints False
x.BeginInvoke(null, null); // On the thread-pool thread; prints True
Thread.Sleep(500); // Let the previous call finish
}
}
EDIT: Como ligado por Jeff continuación, this MSDN article lo confirma:
Si el método se llama BeginInvoke, el común Language Runtime (CLR) colas de la solicitud y devuelve inmediatamente a la persona que llama. El método de destino se llama asincrónicamente en un subproceso desde el grupo de subprocesos.
De [Programación asincrónica mediante delegados] (http://msdn.microsoft.com/en-us/library/22t547yb.aspx): "Si se llama al método BeginInvoke, el tiempo de ejecución de lenguaje común (CLR) coloca en cola la solicitud y regresa inmediatamente a la persona que llama. El método de destino se llama asíncronamente en un hilo del grupo de subprocesos ". –
@Jeff: Gracias. No encontré esa página antes. Debidamente vinculado. –