我已经阅读了无数关于如何实现这一目标的页面,但似乎没有一个对我有用..我想知道是不是因为我使用的是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 - 这对我来说有点迷失,尽管我尝试的每个例子都不起作用。