我的程序中的一个方法是连续访问UI元素并写入文件。这使我的UI卡住了一段时间。我需要在这段时间播放加载gif图像。但图像仅在任务完成后才会出现。
如何更改此代码以便我的应用无需挂起UI?
private void BCreate_Click(object sender, RoutedEventArgs e)
{
ImgLoading.Visibility = Visibility.Visible;
Thread newWindowThread = new Thread(new ThreadStart(RegUser));
newWindowThread.Start();
}
private void RegUser()
{
this.Dispatcher.Invoke((Action)(() =>
{
//method body
.....
ImgLoading.Visibility = Visibility.Hidden;
}));
}
答案 0 :(得分:2)
这样做:
private void RegUser()
{
this.Dispatcher.Invoke((Action)(() =>
{
ImgLoading.Visibility = Visibility.Visible;
}));
//method body
.....
this.Dispatcher.Invoke((Action)(() =>
{
ImgLoading.Visibility = Visibility.Hidden;
}));
}
仅调用访问UI的方法。
考虑使用InvokeAsync
来发生某些事情,但不能立即使用。