heyboy_2000 Ответов: 1

Автоматизация эмулятора терминала HACL: объекты ECLPS и потоковая обработка


Я работаю над автоматизацией эмулятора терминала с помощью IBM HACL. В потоке выполнения я могу получить доступ к объектам программирования HACL и их свойствам/методам. Мое намерение состоит не в том, чтобы блокировать основной поток, а в том, чтобы выполнить эту работу через фонового работника. Здесь все мои попытки провалились.

Что я уже пробовал:

Эта работа:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Dim pConnList As AutConnListTypeLibrary.AutConnList
    pConnList = New AutConnListTypeLibrary.AutConnList
    pConnList.Refresh()
    Debug.Print("Number of sessions: " & pConnList.Count)
'Result:
'Number of sessions: 2
End Sub


Но то же самое невозможно сделать с фоновым работником. При создании экземпляра объекта выбрасывается исключение:
Private Sub bw_DoWork(sender As Object, e As DoWorkEventArgs) Handles bw.DoWork
    Dim pConnList As AutConnListTypeLibrary.AutConnList
    Try
        pConnList = New AutConnListTypeLibrary.AutConnList
        pConnList.Refresh()
        Debug.Print("Number of sessions: " & pConnList.Count)
    Catch ex As Exception
        Debug.Print(ex.Message.ToString)
'Result:
'Exception thrown: 'System.InvalidCastException' in Pcomm test.exe
'Unable to cast COM object of type 'System.__ComObject' to interface type 'AutConnListTypeLibrary.AutConnList'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{3CB39CC1-6F18-11D0-910D-0004AC3617E1}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
    End Try
End Sub

1 Ответов

Рейтинг:
10

Member 12943607

Привет,

Использовать позднее связывание
pConnList = CreateObject("PCOMM.AutConnList")
Это должно помочь

Если вы хотите использовать intelisense, вы можете попробовать использовать
NuGet Gallery | PCOMMLib 1.0.1[^]
Источник доступен здесь:
Vrzasq / PCOMMLib-Bitbucket[^]