Почему бы не установить флажок "ShouldClose", который можно проверить, когда безопасно закрыть форму - и закрыть ее, если требуется?
Что касается примера кода, я бы реализовал его немного по-другому, нодайте мне знать, если это нарушает какие-либо другие требования, и мы можем изменить его ...
''in PleaseWaitForm:
Public Property ShouldClose as boolean = false
Private Sub frmSplash_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Close()
End Sub
''Your posted code
Private Sub MyButton_Click(sender as Object, args as EventArgs) Handles MyButton.Click
Me.pleaseWaitFrm = New PleaseWaitForm()
'' Fire up new thread to do some work in (AddressOf DoMyWork)
Me.pleaseWaitFrm.ShowDialog()
End Sub
Private Sub DoMyWork()
Dim log = Me.DoTheActualWork()
Me.pleaseWaitFrm.ShouldClose = True
If Me.pleaseWaitFrm.Created Then
Me.pleaseWaitFrm.Created.Close
End If
Using logFrm as New LogViewer(log)
logFrm.ShowDialog()
End Using
End Sub
Короче говоря, если мы можем закрыть форму, мы делаем - иначе, установите флаг, и форма будет делатькогда загрузка заканчиваетсяна frmSplash, который проверяет значение, а не использует событие Load
Редактировать: Обнаружен и исправлен баг