用于加载GIF动画的新主题

时间:2016-01-28 15:07:06

标签: wpf vb.net multithreading backgroundworker

我已经阅读了无数关于如何实现这一目标的页面,但似乎没有一个对我有用..我想知道是不是因为我使用的是WPF?

我的WPF页面上有一个图像控件,其中包含GIF动画。它的初始Visibility属性设置为隐藏 - 这个想法是当用户登录时它将变为可见,然后在登录完成后消失。

所以,我的第一个想法是在点击按钮时显示图像 - 执行咕噜声的工作然后再次隐藏它。然而,在所有处理完成之后,图像永远不会显示 - 使得这个想法变得毫无用处。

因此,经过一些挖掘后,人们似乎通过处理新线程并使用Background Worker对象来实现这一目标。我试过这个,但不断得到错误:

  

调用线程无法访问此对象,因为它不同   线程拥有它。

我的代码如下:

线程对象的全局变量:

Friend g_thLoading As Thread

点击按钮点击登录,我有:

Private Sub btnLoginOk_Click(sender As Object, e As RoutedEventArgs) Handles btnLoginOk.Click

    g_thLoading = New Thread(AddressOf LoadingImage)
    g_thLoading.IsBackground = True
    g_thLoading.Start()

    Try
        ... Heavy Processing that takes a while ...

    Catch liEX As UnauthorizedAccessException
        txbResults.Text = liEX.Message()

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

    g_thLoading.Abort()

End Sub

然后使图像可见的方法:

Public Sub LoadingImage()

    imgLoading.Visibility = Visibility.Visible

End Sub

我已经阅读了一些关于说明冻结对象的错误消息的帖子(无法看到它是如何工作的)并且还看看使用Dispatcher - 这对我来说有点迷失,尽管我尝试的每个例子都不起作用。

0 个答案:

没有答案