Sé que es una pregunta similar en: ContinueWith a Task on the Main threadContinuar la tarea de hilo principal
pero esa pregunta es más hacia WPF y no puedo seeem para que funcione en una aplicación de consola.
Quiero ejecutar un método en un subproceso diferente y cuando se completa ese método quiero mantener la ejecución en el hilo principal. No quiero unirme al método. de todos modos aquí es lo que tengo:
class Program
{
static void Main(string[] args)
{
Thread.CurrentThread.Name = "MAIN";
DoWork(x =>
{
Console.Write("Method successfully executed. Executing callback method in thread:" +
"\n" + Thread.CurrentThread.Name);
});
Console.Read();
}
static void DoWork(Action<bool> onCompleteCallback)
{
Console.Write(Thread.CurrentThread.Name); // show on what thred we are executing
Task doWork = new Task(() =>
{
Console.Write(Thread.CurrentThread.Name); // show on what thred we are executing
Thread.Sleep(4000);
});
Action<Task> onComplete = (task) =>
{
onCompleteCallback(true);
};
doWork.Start();
// this line gives an error!
doWork.ContinueWith(onComplete, TaskScheduler.FromCurrentSynchronizationContext());
}
}
¿Cómo puedo ejecutar el método onCompleteCallback en el hilo principal?
¿Por qué quiere/necesita hacer esto? –
Buena pregunta. Estuve viendo algunos tutoriales y dónde tomar notas en una aplicación de consola. No pude hacer que funcione, así que básicamente hago esta pregunta para aprender. Pero supongo que no es necesario hacer esto. –
Solo un FYI - esto se pone peor con 'async' /' await' - si llama a 'await' en una tarea en una aplicación de consola, cosas que no esperaría que ocurrieran :) Es debido a que este mismo problema ocurre bajo el capó –