Ответ 1
Так как это WPF, вы можете использовать диспетчер и вызвать Dispatcher.BeginInvoke
, чтобы перенаправить вызов обратно в поток пользовательского интерфейса, чтобы обновить метку.
В качестве альтернативы вы можете передать TaskScheduler в свой метод и использовать его для обновления метки следующим образом:
// This line needs to happen on the UI thread...
TaskScheduler uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew( () => RecurseAndDeleteStart(uiScheduler) );
Затем внутри вашего метода, когда вы хотите обновить ярлык, вы можете сделать:
Task.Factory.StartNew( () =>
{
theLabel.Text = "Foo";
}, CancellationToken.None, TaskCreationOptions.None, uiScheduler);
Это приведет к возврату вызова в контекст синхронизации потоков пользовательского интерфейса.