有没有办法在完全新的线程中执行 com 对象的方法,而不是附加到主线程?我已经尝试使用 backgrounWorker,甚至通过
尽管应该在全新线程上运行,但一旦 scanner.open 开始,我的主线程就会锁定直到它完成。
非常感谢任何帮助。
Dim thr as new Thread(AddressOf blah)
使用新线程,但都不起作用。我只在“blah”线程函数或backgroundWorker的 DoWork 方法中调用 COM 对象的方法,但仍然会导致我的主 UI 锁定,因为它尝试处理我正在调用的 COM 对象的方法。
我真的需要让这个在单独的线程中执行来自 com 对象的方法,因为它导致整个应用程序锁定。
下面是一个使用方法“DoWork”的线程示例。相同的逻辑可以用于后台工作器
Public Sub Reconnect_Scanner() Implements Scanners.Reconnect_Scanner
'Do our request on a new thread
Dim thread As New System.Threading.Thread(AddressOf Connect)
thread.SetApartmentState(Threading.ApartmentState.STA)
thread.Start()
End Sub
Public Sub Connect()
'Get a new instance of our scanner
Dim scanner As New OposScanner_CCO.OPOSScanner
'Loop until scanner is opened
Do
Debug.Print("looking for scanner")
'If we find the device, exit do
Dim openId As Integer = scanner.Open("Honeywell")
If openId = 0 Then Exit Do
'Sleep 1 second
System.Threading.Thread.Sleep(250)
Loop
End Sub
尽管应该在全新线程上运行,但一旦 scanner.open 开始,我的主线程就会锁定直到它完成。
非常感谢任何帮助。