我正在使用无线电微控制器(BLE)做一些工作。 .NET的GenericAttributeProfile
命名空间支持的机制是在新数据进入(通知)时使用EventHandler
。我目前看到的一个问题是,尽管我的数据是从无线电硬件按顺序发送的,但数据不一定按此顺序处理。我猜这是由于调用EventHandler
的异步方式(如果我错了请纠正我)。每次进入新的数据时,都会调用事件处理程序,然后读取数据,并向控制台写入数据和静态变量,每次调用事件处理程序时该变量都会递增(不是线程安全的,但似乎是好的测试)。如果也递增,它打印出来的数据,我可以看到事件正在按顺序处理。
所以我的问题是,如何确保按顺序处理事件。从我所做的研究中,我只能找到有关eventHandler执行顺序的文献。我不关心这里,因为我只有1个eventHandler。我关心事件执行的顺序
答案 0 :(得分:0)
更新2014年9月15日
我只是想让每个人都知道我实际上有2个问题正在进行中。我原本以为它与线程计时有关,但这只是问题的一部分(对我来说无论如何)。在我修复了线程计时问题后,我发现,正如原始海报所说,事件实际上是乱序。我已经向微软证实了这个问题,他们正在努力解决这个问题。一旦我得到他们的决议,我会在这里发布。
更新2015年8月1日
微软最终与我联系并确认了这个问题。然而,他们认为,为了获得8.1核心,获益的成本太高,因此他们不会在下一个主要版本的Windows发布之前引入修复。