繁体   English   中英

第三方DLL引发事件

[英]3rd party dll raising events

我使用第三方dll从其服务器获取一些数据。 我调用了一个void方法,然后我订阅了对此方法的调用引发的事件。 引发的事件通过其参数返回数据。

因此,调用:void getdata(id)会引发:void onReturn(object)->返回具有数据的对象。

每当有一次对getdata(id)的调用时,此方法都起作用

问题是当我遍历id列表时,在该列表的循环调用getdata(id)内,相应的事件未正确引发。 假设有10个ID的列表,则有10个对getdata(id)的调用,但只引发了很少的onReturns。

返回的对象还返回传递给getdata(id)的id,以便我可以匹配发送的数据和接收的数据。

有没有办法确保所有事件都被监听? 因此,如果我通过getdata(id)发送10个ID,则要确保已处理10个onReturns。

我正在使用C#、. net 4.0

谢谢

如果它是第三方DLL,则不会告诉他们它们是如何实现的。 当您进入调试模式时,是否在调用onReturn()侦听器之前onReturn()getData()的调用? 如果是这样,它可能在内部使用线程(或至少是异步侦听器),并且将多个getData()得太近可能会导致它在待处理的响应上脚。

我想尝试解决的唯一方法是自己使用多线程,例如使用Mutex,该Mutex在调用getData()之后等待并在onReturn()事件中释放。 这样,您一次只会收到一个未解决的请求,这似乎是对您有效的条件。

编辑:您是否已经与第三方供应商讨论过此事? 我想如果您首先想到我们,他们的支持并不是最好的,但是值得一试。

编辑第二个:当您说它从他们的服务器获取数据时,这是否意味着它通过网络发出请求? 如果这些请求未加密,那么您可以对协议进行反向工程并为自己创建一个新的API,而不必依赖经过验证的越野车。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM