无需挂起即可访问UI

时间:2014-09-07 13:18:03

标签: c# wpf

我的程序中的一个方法是连续访问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;
    }));
}

1 个答案:

答案 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来发生某些事情,但不能立即使用。