Dado que es WPF, puede usar Dispatcher y llamar al Dispatcher.BeginInvoke
para coordinar la devolución de llamada a la secuencia de la interfaz de usuario para actualizar la etiqueta.
Alternativamente, se puede pasar un TaskScheduler en su método, y lo utilizan para actualizar la etiqueta de la siguiente manera:
// This line needs to happen on the UI thread...
TaskScheduler uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(() => RecurseAndDeleteStart(uiScheduler));
Luego, dentro de su método, cuando se desea actualizar una etiqueta, se puede hacer:
Task.Factory.StartNew(() =>
{
theLabel.Text = "Foo";
}, CancellationToken.None, TaskCreationOptions.None, uiScheduler);
Esto devolverá la llamada al contexto de sincronización de la rosca de la interfaz de usuario.
¡Perfecto! Exactamente lo que estaba buscando. – Demetri
+1 para mostrar que una tarea secundaria se puede ejecutar en un programador diferente (y otro +1 para mostrarme 'CancellationToken.None' - He estado pasando' nuevo CancelaciónToken() 'pero me pareció un hack!) – axeman
funcionando great ty – MonsterMMORPG