我正在尝试让我的 UI 在我的 WPF 应用程序中更具响应性。我使用
生成了一个新线程Task.Factory.StartNew( () => RecurseAndDeleteStart() );
在该方法 RecurseAndDeleteStart()
中,我想用正在删除的文件更新 UI 中的标签。
如何做到这一点?
最佳答案
由于它是 WPF,您可以使用 Dispatcher 并调用 Dispatcher.BeginInvoke
将调用编码回 UI 线程以更新标签。
或者,您可以将 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);
这会将调用推回 UI 线程的同步上下文。
关于c# - 使用 Task.Factory.StartNew 时更新 UI 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075998/