我对visual basic 6项目有点问题。在IDE中一切正常,但每次运行应用程序时,可执行文件都会崩溃。该应用程序使用回调与.Net dll进行通信。甚至代码就像回调开始时显示一样简单。 我将编译模式更改为P-Code,但问题仍然存在。 任何帮助将是欣赏。 谢谢大家
VB6代码:
Option Explicit
Public foo As FOOClient.foo
Public comWrapper As FOOClient.comWrapper
Sub Start()
Set foo = New FOOClient.foo
Set comWrapper = New FOOClient.comWrapper
Set foo = comWrapper.SpiInit()
comWrapper.Main foo, AddressOf TxFlowStateChanged, AddressOf PairingFlowStateChanged
foo.Start
PrintStatusAndActions
End Sub
Private Sub TxFlowStateChanged(ByVal e As FOOClient.TransactionFlowState)
frmActions.Show
PrintFlowInfo e
PrintStatusAndActions
End Sub
Private Sub PairingFlowStateChanged(ByVal e As FOOClient.PairingFlowState)
frmActions.Show
frmActions.listFlow.Clear
frmActions.lblFlowMessage.Caption = e.Message
If e.ConfirmationCode <> "" Then
frmActions.listFlow.AddItem "# Confirmation Code: " + e.ConfirmationCode
End If
PrintStatusAndActions
End Sub
答案 0 :(得分:0)
您的C#库可以使用线程,但它必须永远不会在任何线程上回调到基于VB6的EXE,而是VB6启动的主GUI线程。您可以使用Control.Invoke和Control.BeginInvoke(以及其他方法)将回调分派回VB6。 (可以在库中为此目的创建一个Control实例,只需确保它是在基于VB6的EXE的第一个调用线程上创建的。)