私は非常に深刻なマルチスレッドのデバッグの問題があります。私は、シリアルデバイスとやり取りするときにタイミング問題があり、それを追跡する必要があります。私は3つのスレッドを持っています:C#とvs2008でスレッド化されたデバッグ
- UIアップデートのメインスレッドです。ユーザーは、プリセットを選択することによって、デバイスの1つのパラメータを変更することも、複数のパラメータを同時に変更することもできます。
- デバイスがまだ接続されていることを確認するために照会するステータス検査スレッド。ユーザーがデバイスをシャットオフするか、またはデバイス自体が興味深い方法で相互作用する場合、ステータスの変更をUIに反映させる必要があります。
- デバイスが応答するシリアルポートを読み取るスレッド。
私の問題は、この状況をデバッグすることと実際に関係しています。デバッグするためには、各スレッドで1行に1つずつブレークポイントを設定する必要があります。あるスレッドでブレークした場合、デバッガはそのスレッドをステップ実行しません。私は他のスレッドが更新を続けることを理解していますが、デバッガで通常のように実行しているスレッド、つまりある行から次の行に移動しないでください。次に、「スレッド」タブを使用してスレッド間を切り替えることができました。
私はWPFにいると言いますが、それは状況がまったく変わるかどうかわかりません。多分それはしないかもしれません。 UIが稼動している間だけ状況をチェックする必要があるため、ステータスチェックスレッドはUIコントロールの一部です。そのコントロールはメインアプリケーションとは別のライブラリにあります。
削除WPFの参照は、それが本当にWPFに関連していない原因となります。 –
残念ながら、私はプロジェクトがWPFに移行以来起こったこと(他の人がソースコントロールで、異なるビルド設定を行う必要があり、これはただ一つの問題行動である)VS2008は非常に、非常にwonkily演技を始めたことに気付きました。したがって、包含の場合、ちょうどの場合。 – mmr