如何在调用重方法之前使标签可见

时间:2015-04-28 08:37:12

标签: c# wpf user-interface synchronization async-await

我有一个需要几秒钟才能执行的方法。我创建了一个大标签,它应该在调用方法之前出现,并在方法完成执行时消失。但是,即使出现标签的行放在方法调用之前,我的标签也不会出现。为什么我的C#WPF代码会这样做?如何解决这个问题,以便在调用方法之前显示我的标签并在之后消失?

这是我的代码示例:

label.Visibility = Visible;
myMethod();
label.Visibility = Invisible;

1 个答案:

答案 0 :(得分:7)

  

我有一个需要几秒钟才能执行的方法。

那么基本上你不应该在UI线程中这样做。这会阻止UI线程,阻止UI更新。

您应该在其他线程中执行长时间运行的任务,但请确保您只从UI线程触摸UI本身。

使用C#5的async/await功能,这相对直截了当:

// This now needs to be in an async method
label.Visibility = Visible;
await Task.Run(() => myMethod());
label.Visibility = Invisible;