У меня есть приложение .NET, которое ссылается на устаревшую DLL VB6. Унаследованная DLL имеет класс с общедоступным методом. Внутри этого открытого метода он пытается найти существующую форму по имени, или создать его, если он не существует:Ошибка -2147417848 на VB.Forms.Add call over COM
Set objForm = GetForm(strFormName)
If objForm Is Nothing Then
'Creates a new instance of the form
Set objForm = VB.Forms.Add(strFormName)
End If
... где GetForm
является:
Private Function GetForm(ByVal strFormName As String) As Form
Dim objForm As Form
For Each objForm In VB.Forms
If objForm.Name = strFormName Then
Set GetForm = objForm
Exit Function
End If
Next
Set GetForm = Nothing
End Function
Это повышение ошибки в эта линия:
Set objForm = VB.Forms.Add(strFormName)
ошибка:
Automation error
The object invoked has disconnected from its clients.
Error#-2147417848(80010108)
Обратите внимание, что strFormName
является действительным именем формы, и этот открытый вызов метода работает почти все время. Это очень редко случается, чтобы поднять эту ошибку.
Я хотел бы знать, что вызывает эту ошибку, или что еще можно сделать, чтобы отслеживать ее дальше?
Вы знаете об этой статье? http://support.microsoft.com/default.aspx?scid=kb;en-us;Q319832 – Dabblernl
@Dabblernl - да, я это видел. Я не думаю, что это применимо. Я использую полностью квалифицированную ссылку ('VB.Forms.Add'). Это также говорит о том, что он работает в первый раз и не работает при последующих вызовах, но это работает сначала, во-вторых, в третий раз, но иногда просто случайно. –
У вас есть '' Global's? –