事件处理程序无序处理事件

本文关键字:处理事件 无序 程序 事件处理 | 更新日期: 2023-09-27 18:05:03

我正在用无线电微控制器(BLE)做一些工作。. net的GenericAttributeProfile名称空间支持的机制是,每当有新数据进来(通知)时,使用EventHandler。我目前看到的一个问题是,尽管我的数据是按顺序从无线电硬件发送的,但数据不一定按该顺序处理。我猜这是由于异步方式的EventHandler被调用(请纠正我,如果我错了)。每次有新数据进来时,都会调用事件处理程序,然后读取数据,并写入控制台数据和一个静态变量,该变量在每次调用事件处理程序时都会增加(不线程安全,但似乎可以进行测试)。它输出的数据也在递增,我可以看到事件的处理顺序是乱的。

所以我的问题是,我如何确保事件按顺序处理。根据我所做的研究,我只能找到有关evenenthandler执行顺序的文献。这里我不关心这个,因为我只有1个eventandler。我关心的是事件执行的顺序

事件处理程序无序处理事件

更新09/15/2014

我只是想让大家知道我实际上有两个问题正在进行中。我原本认为这与线程计时有关,但这只是问题的一部分(对我来说)。在我修复了线程计时问题后,我发现,正如最初的海报所述,事件实际上是无序的。我已经和微软确认了这个问题,他们正在修复这个问题。一旦我从他们那里得到解决方案,我就会在这里发布。

更新01/08/2015

微软最终联系了我并确认了这个问题。然而,他们认为将此功能添加到8.1核心中成本太高,所以他们不会在windows的下一个主要版本发布之前引入修复。