Protected Overrides Sub LoadForm()
MyBase.LoadForm()
Try
'StartProcess might be causing an error (error msg is issue with loading config, which would be incorrect)
StartProcess()
Dim D As New _Delegate(AddressOf SOPERATION)
Me.Invoke(D)
BusinessObject = New bConfig(Me)
CType(BusinessObject, bConfig).LoadKeyValue()
Catch ex As Exception
MESSAGES.ShowMessage(MessageIndex.ErrInLoadConfigData, TitleIndex.LoadForm, MessageBoxButtons.OK, MessageBoxIcon.Information)
StopProcess()
EnableDisable(CurrentBillType)
End Try
End Sub
Я могу выполнить это 100 раз при тех же самых условиях, и кажется, что 40 раз он потерпит крах со следующей ошибкой:
"Невозможно получить доступ к удаленному объекту.
Имя объекта: 'frmImportExport'. "
Он либо умрет на
'within StartProcess()
Dim __Delegate As New _Delegate(AddressOf StartProcess)
Me.Invoke(__Delegate)
или
Dim D As New _Delegate(AddressOf SOPERATION)
Я знаю, что трудно ответить, не видя весь код, но я не могу понять, почему это иногда работает, а иногда не работает в одинаковых условиях. Любые идеи о том, что я мог бы искать? Форум не размещается вручную нигде, где я вижу, и этот код выполняется при загрузке формы.
Дополнительная информация:
StackTrace: "в
System.Windows.Forms.Control.MarshaledInvoke (Control
вызывающая сторона, метод делегата, объект []
args, логическая синхронность) в
System.Windows.Forms.Control.Invoke (Делегат
метод, Object [] args) в
ShiftBilling.BaseForm.StartProcess ()
в
C: \ Users .... \ BaseForm.vb: линия
138 в
ShiftBilling.frmImportExport.LoadForm ()
в
C: \ Users \ Alec \ Work \ Levelset \ ShiftBillingSource \ ShiftBilling_Source \ JLRBilling \ frmImportExport.vb: линия
66 "Строка
Содержимое ShowProcess () не очень важно, но вот код в нем:
Protected Sub StartProcess()
If Me.InvokeRequired Then
Dim __Delegate As New _Delegate(AddressOf StartProcess)
Me.Invoke(__Delegate)
Else
Validator.Clear()
'If Me.MdiParent IsNot Nothing Then
IsProcessRunning = True
frmMain.ShowProgress()
'CType(Me.MdiParent, frmMain).ShowProgress()
EnableControls(False)
'End If
End If
End Sub
Он никогда не достигнет EndProcess в случае сбоя, поэтому в коде нет реальной необходимости.
Вот код, который выполняется при нажатии на ссылку для отображения формы:
Private Sub ImportExportMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImportExportMenu.Click
_frmimport = New frmImportExport
If clickWindow(_frmimport.Text, _frmimport) = True Then Exit Sub
_frmimport.Show()
_frmimport.MdiParent = Me
SetFormPosition(_frmimport)
End Sub
Это подчиненная форма, которая должна отображаться в главной форме.
Также стоит отметить, что это был аутсорсинговый проект, с которым мне приходилось работать только полтора дня.