我有一个需要几秒钟才能执行的方法。我创建了一个大标签,它应该在调用方法之前出现,并在方法完成执行时消失。但是,即使出现标签的行放在方法调用之前,我的标签也不会出现。为什么我的C#WPF代码会这样做?如何解决这个问题,以便在调用方法之前显示我的标签并在之后消失?
这是我的代码示例:
label.Visibility = Visible;
myMethod();
label.Visibility = Invisible;
答案 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;