COM组件问题,帮顶的有分.解决问题另给分

ad4017 2008-08-21 02:17:04
VB.net调用COM多个事件出错

在VB中引入COM组件,响应单个COM事件不出错,响应两个COM事件就出现"Exception from HRESULT: 0x80040202"错误,如何解决,请高手帮助.代码如下:
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.IO

Public Class Form1
Private WithEvents ff As SService'(COM组件名称)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ff = New SService

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ff.SendMessage("你好")'调用COM组件方法
End Sub

Private Sub ff_OnMessageChange(ByVal ID As String, ByVal PMessage As String) Handles ff.OnMessageChange 'COM组件事件
'未写处理代码
End Sub

Private Sub ff_OnStatusChanged(ByVal Status As Integer, ByVal ErrorStatus As Integer) Handles ff.OnStatusChanged 'COM组件另一事件
MsgBox("事件执行!")
End Sub

End Class
...全文
125 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
thunor 2011-05-04
  • 打赏
  • 举报
回复
看看怎么解决!
lizidong110 2011-05-04
  • 打赏
  • 举报
回复
原以为
我会为分而来,得分而去,
没想到
楼主是个大骗子...可怜善良的我噢...
ad4017 2008-08-23
  • 打赏
  • 举报
回复
如果删掉
Private Sub ff_OnMessageChange(ByVal ID As String, ByVal PMessage As String) Handles ff.OnMessageChange 'COM组件事件
'未写处理代码
End Sub
的代码就不出错,是不是.NET不支持COM多个事件接口
ad4017 2008-08-23
  • 打赏
  • 举报
回复
调用一个COM组件,如果只写一个事件,程序是可以正常执行的,如果写两个事件就出错,应该是.NET与COM接口的问题
chillystar 2008-08-22
  • 打赏
  • 举报
回复
同意5楼的建议,Msgbox等待回应时是会挂起当前线程的,会不会是在此时同时触发了其他事件而冲突?例如OnMessageChange和OnStatusChanged不在同一线程(事件线程当然不会相同,费话)而OnStatusChanged每次都是在同一线程处理,在一个中OnMessageChange被触发2次,每次都会同时触发到OnStatusChanged事件,第一个OnStatusChanged激活Msgbox时线程就被挂起,第二次就会导致失败
thunor 2008-08-22
  • 打赏
  • 举报
回复
友情帮顶
yanlongwuhui 2008-08-22
  • 打赏
  • 举报
回复
关注中
llsus 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 llsus 的回复:]
你说的多个COM是同一个COM的多个实例还是多个不相干的COM?
如果是多个不相干的COM,建议你单个测试都没问题再说
如果是个1个COM的多个实例,那我们必须知道那个COM是怎么写的,否则不能做出判断,因为很可能是COM本身的问题。
[/Quote]
llsus 2008-08-22
  • 打赏
  • 举报
回复
你说的多个COM是同一个COM的多个实例还是多个不相干的COM?
如果是多个不相干的COM,建议你单个测试都没问题再说
如果是个1个COM的多个实例,那我们必须知道那个COM是怎么写的,否则能做出判断,因为很可能是COM本身的问题。
shockcqyc 2008-08-22
  • 打赏
  • 举报
回复
严重关注
cauhorse 2008-08-22
  • 打赏
  • 举报
回复
UP
cowboy0000 2008-08-22
  • 打赏
  • 举报
回复
不懂帮顶..
taick 2008-08-21
  • 打赏
  • 举报
回复
不是很清楚,因为不能测试你的COM组件.但肯定是COM组件的问题.
可以把MsgBox("事件执行!")改成label.text=("事件执行!"试试看行不.
ejoe313 2008-08-21
  • 打赏
  • 举报
回复
关注
一只熊猫 2008-08-21
  • 打赏
  • 举报
回复
关注
ad4017 2008-08-21
  • 打赏
  • 举报
回复
UP
ad4017 2008-08-21
  • 打赏
  • 举报
回复
UP

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧