Vb.net 处理后台工作人员不起作用

Vb.net 处理后台工作人员不起作用,vb.net,backgroundworker,Vb.net,Backgroundworker,我有一个后台工作人员调用一个表单,手里拿着一个gif动画。其目的是在进程进行时显示动画,但在进程完成时应关闭动画。但即使在流程完成后,它也不会关闭。请帮忙。 谢谢 BackgroundWorkers实际上要做后台操作的“工作”,因此主UI线程可以继续在屏幕上呈现内容。我怀疑您希望GetDataSources()函数调用在BackgroundWorker线程内完成 尝试切换您的按钮单击功能和BackgroundWorker的DoWork功能。具体来说,我的意思是: Private Sub

我有一个后台工作人员调用一个表单,手里拿着一个gif动画。其目的是在进程进行时显示动画,但在进程完成时应关闭动画。但即使在流程完成后,它也不会关闭。请帮忙。
谢谢


BackgroundWorkers实际上要做后台操作的“工作”,因此主UI线程可以继续在屏幕上呈现内容。我怀疑您希望
GetDataSources()
函数调用在BackgroundWorker线程内完成

尝试切换您的按钮单击功能和BackgroundWorker的DoWork功能。具体来说,我的意思是:

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
            Dim sqldatasourceenumerator1 As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance
            datatable1 = sqldatasourceenumerator1.GetDataSources()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            BackgroundWorker1.RunWorkerAsync()
            frmAnimation.ShowDialog()
    End Sub
此外,向RunWorkerCompleted事件添加一些代码,以处理后台操作完成后应执行的操作

    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
            DataGridView1.DataSource = datatable1
            frmAnimation.Close()
    End Sub

您还可以考虑使用<代码> FrMimimult.Suffor(<)/代码>,而不是<代码> Frimimal.StdidiAudio()/代码>,这取决于您是否希望该过程是模态的或无模式的。您可以阅读更多信息。

frmanition是类型还是实例
    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
            DataGridView1.DataSource = datatable1
            frmAnimation.Close()
    End Sub