在后台线程上加载大量表格,并在完成后将线程上下文带到主线程

时间:2019-03-31 10:46:55

标签: vb.net multithreading winforms

我有一个可以快速加载的主要表格,但是我还需要在后台加载第二个表格。第二种形式具有嵌入式浏览器,需要预加载网页。我想在单独的线程上启动第二种形式,并在完全加载后将其带到主线程。加载按钮时,无法访问此表单

在我显示的主要形式中,我已经尝试过:

    Private Sub frmMain_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown

        Dim trd As New Thread(New ParameterizedThreadStart(Sub(t As Thread)
            Me.frmAlphaTicket = New frmAlphaticket
            frmAlphaTicket.Opacity = 0
            frmAlphaTicket.Show()
            Thread.Sleep(1000)
            t.Join()
                              End Sub))
        trd.Priority = ThreadPriority.Lowest
        trd.Start(trd)

    End Sub

t.Join()是错误的方法,因为它仅冻结当前线程,直到调用线程完成。它不会更改线程上下文,所以我得到一个UI ThreadException。

我如何在后台加载第二个表格,以免降低主表格的速度?

0 个答案:

没有答案