Dem*_*tri 19 c# wpf multithreading task-parallel-library
我试图在我的WPF应用程序中使我的UI更具响应性.我使用生成一个新线程
Task.Factory.StartNew( () => RecurseAndDeleteStart() );
Run Code Online (Sandbox Code Playgroud)
在该方法中,RecurseAndDeleteStart()我想要使用正在删除的文件更新UI中的标签.
如何实现这一目标?
Ree*_*sey 46
由于它是WPF,您可以使用Dispatcher并调用Dispatcher.BeginInvoke将调用封送回UI线程以更新标签.
或者,您可以将TaskScheduler传递给您的方法,并使用它来更新标签,如下所示:
// This line needs to happen on the UI thread...
TaskScheduler uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew( () => RecurseAndDeleteStart(uiScheduler) );
Run Code Online (Sandbox Code Playgroud)
然后,在您的方法内部,当您想要更新标签时,您可以:
Task.Factory.StartNew( () =>
{
theLabel.Text = "Foo";
}, CancellationToken.None, TaskCreationOptions.None, uiScheduler);
Run Code Online (Sandbox Code Playgroud)
这会将调用推回到UI线程的同步上下文中.
| 归档时间: |
|
| 查看次数: |
17387 次 |
| 最近记录: |