冰天雪地寒风刺骨等待解决办法,VB6.0用组件连接点崩溃问题
我用ATL用C++ 做了个COM组件,需要在VB6下使用。
组件中调用了一个DLL,DLL中有多个线程运行,
然后组件IDL实现了两种接口,一种是用Advise注册回函数,一种是声明了一个连接点
这两种模式都能正常工作
然后我在VB6中引用了该组件,
使用 withevents 声明了
VB中自动生成了连接点的函数框架:
Private Sub agent_CallbackFunction(ByVal functype As Byte, ByVal newtick As Long, ByVal msgtype As String, ByVal msgname As String, ByVal msgid As Long, ByVal wparam As Long, ByVal lparam As Long)
On Error GoTo err:
msg = msg + "fuctype=" + Str(functype) + " type=" + msgtype + " name=" + msgname + " id=" + Str(msgid)
msg = msg + " wparam=" + Str(wparam) + " lparam" + Str(lparam)
If Len(msg) > 600 Then
msg = ""
End If
Text1.Text = msg
Exit Sub
err:
MsgBox err.Description
End Sub
然后运行完全正常!!!
问题的关键是:
不在回调函数中设断点一切正常,
只要我在这个函数中设一个断点,当它触发后,程序停止,然后我什么也不做,直接继续让程序运行,杯具出现
蹦出了DDE什么的错误框,然后再点确认后,更大杯具出现!VB6的IDE直接退出了!!!没了!又要重新打开工程
哪位高手帮帮,我被这个问题折磨一天了!!
VB6已经打了 SP6的补丁了!!
[解决办法]
这个没什么好办法,就像是你写一个while死循坏,VB IDE 就像要挂掉一样,你要断点看什么,可以写日志吧,别写窜了 -.-
[解决办法]
协同工作的两个线程,一个在运行,另一个你让设置了断点停下来,你说会不会出问题!
[解决办法]
VB多线程的确会导致一些问题。就目前这些信息难以分析出什么问题来。
[解决办法]