簡単なアプリケーションは CF 2.0 で書かれています。私に関する限り、それはシングルスレッドです。
アプリケーションの 2 つの部分が重要です。PDA のバーコード スキャナー (メーカー提供) を表すクラスによって発生した "バーコード スキャン" イベントを処理するイベント ハンドラーと、30 秒ごとに実行される Windows.Forms.Timer のイベント ハンドラーです。
最近、アプリケーションがバグに悩まされていました。私が見ることができる唯一の理由は、Timer_Tick イベントの途中で Barcode Scanned イベントを処理していることです。これは不可能であり、最初のイベントが完全に処理されるまで、イベントの 1 つがキューで待機することは確実でした。MSDN の Windows.Forms.Timer ページも、それが通常のシングルスレッド タイマーであることを保証します。Barcode Scanned によってトリガーされたコードは、インターフェースの一部を変更しますが、例外は発生しません。そのため、シングルスレッドでもあると想定しています。いいえ、DoEvents などは使用していません。
そのような再入可能性は不可能であり、他の考えられる理由をもっと詳しく調べる必要がある、またはその逆で、彼らが同じ問題に苦しんでいると確信できる人はいますか?