vb.net后台工作程序出错

vb.net后台工作程序出错,vb.net,multithreading,backgroundworker,Vb.net,Multithreading,Backgroundworker,在RunWorkerCompleted方法frmProcessing.close()中,此时不关闭frmProcessing窗体。。。在响应msgbox后,它将关闭frmProcessing。。。为什么会这样。。。注意:frmProcessing作为模式对话框访问。。。请帮助我原因是您在即将关闭的表单上显示消息,因此它将先等待messagebox响应,然后再关闭。如果您想关闭并生成一个消息框,那么您应该这样做:(我根据您的需求假设Backgroundworker属于FRM处理表单) FRM主代码

RunWorkerCompleted
方法
frmProcessing.close()
中,此时不关闭
frmProcessing
窗体。。。在响应
msgbox
后,它将关闭
frmProcessing
。。。为什么会这样。。。注意:
frmProcessing
作为模式对话框访问。。。请帮助我

原因是您在即将关闭的表单上显示消息,因此它将先等待messagebox响应,然后再关闭。如果您想关闭并生成一个消息框,那么您应该这样做:(我根据您的需求假设Backgroundworker属于FRM处理表单)

FRM主代码:(假设这是frmProcessing的所有者形式)

FRM处理代码:

Dim frmProcessing as new SomeProcessingFormName()

If (frmProcessing.ShowDialog() = DialogResult.OK) Then
      msgbox("Welcom")
   Else 
      msgbox("Invalid Pswd")
End If

你的问题解决了吗?
Dim frmProcessing as new SomeProcessingFormName()

If (frmProcessing.ShowDialog() = DialogResult.OK) Then
      msgbox("Welcom")
   Else 
      msgbox("Invalid Pswd")
End If
Public isValidUser as Boolean ' Global variable OR make it a property

Private Sub backgroundWorker1_DoWork( _ ByVal sender As Object, _ ByVal e As DoWorkEventArgs) _ Handles backgroundWorker1.DoWork

isValidUser = CheckInDataBase(Username,Pass)

End Sub

Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorker1.RunWorkerCompleted

   frmProcessing.Close()          

   If isValidUser then
         Me.DialogResult = DialogResult.Ok
   else 
         Me.DialogResult = DialogResult.Cancel
   End If

End Sub