Автоматизация эмулятора терминала 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