首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

冰天雪地寒风刺骨等待解决方法,VB6.0用组件连接点崩溃有关问题

2012-03-06 
冰天雪地寒风刺骨等待解决办法,VB6.0用组件连接点崩溃问题我用ATL用C++ 做了个COM组件,需要在VB6下使用。组

冰天雪地寒风刺骨等待解决办法,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多线程的确会导致一些问题。就目前这些信息难以分析出什么问题来。
[解决办法]

探讨

问题是现在的现象就是这样,全速跑没有问题,一设断点后,再让它继续走就会崩溃,
另外,这个现象只在VB6中出现,VB2003以上版本都是正常的,正常调试没有问题

热点排行