一个简单的应用程序是用 CF 2.0 编写的。就我而言,它是单线程的。
该应用程序的两个部分很有趣:一个事件处理程序处理由代表 PDA 的条形码扫描仪(由制造商提供)的类引发的“条形码扫描”事件,以及一个每 30 秒运行一次的 Windows.Forms.Timer 事件处理程序。
最近,该应用程序遇到了一个错误,正如我所见,唯一可能的原因是在 Timer_Tick 事件中间处理 Barcode Scanned 事件。我绝对确定这是不可能的,并且其中一个事件将在队列中等待,直到第一个事件被完全处理。MSDN 中的 Windows.Forms.Timer 页面还确保它是一个常规的单线程计时器。由 Barcode Scanned 触发的代码会更改界面的某些部分,不会导致异常,因此我假设它也是单线程的。不,我们没有使用 DoEvents 等。
任何人都可以肯定地告诉我,这种重入是不可能的,我应该更加努力地寻找其他可能的原因,反之亦然,他们遇到了同样的问题?