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

时间:2014-05-24 19:01:50

标签: c# events timer bluetooth-lowenergy eventhandler

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

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

1 个答案:

答案 0 :(得分:0)

更新2014年9月15日

我只是想让每个人都知道我实际上有2个问题正在进行中。我原本以为它与线程计时有关,但这只是问题的一部分(对我来说无论如何)。在我修复了线程计时问题后,我发现,正如原始海报所说,事件实际上是乱序。我已经向微软证实了这个问题,他们正在努力解决这个问题。一旦我得到他们的决议,我会在这里发布。

更新2015年8月1日

微软最终与我联系并确认了这个问题。然而,他们认为,为了获得8.1核心,获益的成本太高,因此他们不会在下一个主要版本的Windows发布之前引入修复。