首页 新闻 会员 周边 捐助

引用COM组件报错!未处理异常COMException,求解!

0
悬赏园豆:30 [已解决问题] 解决于 2010-11-04 13:26
//这个是组件类
public SmsClientClass sms = null;

private void Form1_Load(object sender, EventArgs e) {
this.btnLogin.Enabled = false;
this.btnBalance.Enabled = false;
sms
= new SmsClientClass();
//这里不会报错
sms.OnConnect += new ISmsClientEvents_OnConnectEventHandler(onConnect);
//这里就会出错(异常来自 HRESULT:0x80040202)
//如果注释了上面的,这句就没错下句就会抱这个错,好像就能用一个事件
sms.OnLoginAccept += new ISmsClientEvents_OnLoginAcceptEventHandler(onLoginResp);
sms.OnUserInfoAck
+= new ISmsClientEvents_OnUserInfoAckEventHandler(OnUserInfoAck);
sms.OnSmsBatchAck
+= new ISmsClientEvents_OnSmsBatchAckEventHandler(onSendAck);
}



问题补充: 未处理 System.Runtime.InteropServices.COMException Message="异常来自 HRESULT:0x80040202" Source="mscorlib" ErrorCode=-2147220990 StackTrace: 在 System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise(Object pUnkSink, Int32& pdwCookie) 在 SPCUserInterface.ISmsClientEvents_EventProvider.add_OnLoginAccept(ISmsClientEvents_OnLoginAcceptEventHandler ) 在 SPCUserInterface.SmsClientClass.add_OnLoginAccept(ISmsClientEvents_OnLoginAcceptEventHandler )
BlobWater的主页 BlobWater | 初学一级 | 园豆:170
提问于:2010-11-03 15:23
< >
分享
最佳答案
0

你是说你的 4 个事件,每次只能注册 1 个吗?

收获园豆:30
Launcher | 高人七级 |园豆:45050 | 2010-11-03 15:25
感觉好像是这样的,具体是什么样我也不知道。 我做的是一个接口,提供给我了一个dll文件,文档上说是采用COM标准接口,注册后添加引用使用的时候就这样,如果我就留下一个事件就没有问题。
BlobWater | 园豆:170 (初学一级) | 2010-11-03 15:34
@BlobWater:那你得把问题确定了,是有一个事件无法注册,还是同时只能注册一个事件?
Launcher | 园豆:45050 (高人七级) | 2010-11-03 16:20
同时只能注册一个事件。 现在在运行就找不到那个引用了。。郁闷!还要在重新注册。
BlobWater | 园豆:170 (初学一级) | 2010-11-03 17:03
@BlobWater:你别急,我明天写个COM组件测试下。
Launcher | 园豆:45050 (高人七级) | 2010-11-03 17:31
恩 谢谢!
BlobWater | 园豆:170 (初学一级) | 2010-11-03 17:47
@BlobWater:我使用微软的All-In-One Code Framework中的ATLDllCOMServer项目作了测试,并添加了一个DoublePropertyChanging事件,然后在WinForm中同时注册FloatPropertyChanging和DoublePropertyChanging两个事件,运行正常. 因此,你遇到的问题,应该是SmsClientClass组件未正确实现事件的问题.
Launcher | 园豆:45050 (高人七级) | 2010-11-04 10:57
也就是说这个组件做的有问题了? 郁闷。
BlobWater | 园豆:170 (初学一级) | 2010-11-04 10:58
@BlobWater:是的,你可以自己下载微软的All-In-One Code Framework中的ATLDllCOMServer项目在你的本机做测试.
Launcher | 园豆:45050 (高人七级) | 2010-11-04 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册