Thread.Sleep()はデバッガーのフォーカスを盗んでいる

現在、私は定期的な重いデータ管理を行うバックグラウンドスレッドを持っています。数百ミリ秒ごとにプロセスを実行する必要があるだけなので、プロセスの最後に Thread.Sleep()を呼び出し、ループの先頭に戻り、繰り返します。

これは完全に機能しており、残りのソフトウェアについては悲しみやパフォーマンスの問題は発生しません。しかし、私がバグを起こす唯一の事は、私の主なスレッドの現在の場所に行くのではなく、デバッガを壊したときに、 Thread.Sleep()によって盗まれ、代わりに私を連れて行くことです。

デバッガがその行で停止しないようにする方法はありますか?あるいは、スレッドをスリープ状態にする方法がありますか?

前もって感謝します!

3

1 答え

メソッドに Thread.Sleep()を置き、 DebuggerStepThrough が表示されます。

You can also just "freeze" the you don't want to "steal focus" from Threads window (Debug -> Windows -> Threads). Also remember to unfreeze them when you're done

As an aside using a Timer (there are two) or a AutoReset Event is preferred to using Thread.Sleep() See Is Sleep() evil?

1
追加された
[DebuggerStepThrough] をありがとうございました。以前はそのことを考えていましたが、それはプロパティのためだと思っていました。多分私は Thread.Sleep()で私の立場を再考するべきでしょう。私はタイマーは、それが動作する完全な方法のための最良のアイデアだとは思わない。方法をスケジュールする.NET 2.0の方法はありますか?
追加された 著者 Craig White,
さて、私はBgWorkerを完成させました。 TimerCallback tc = new TimerCallback(bw.RunWorkerAsync); System.Threading.Timer = new System.Threading.Timer(tc、null、Interval、Timeout.Infinite);
追加された 著者 Craig White,