2011-12-19 9 views
3

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

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

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

ありがとうございます!

答えて

1

あなたが試みることができる1つの方法は、Thread.Sleep()をメソッドに入れ、それにDebuggerStepThroughを追加することです。

スレッドウィンドウ(「デバッグ」 - >「Windows」 - >「スレッド」)から「フォーカスを奪う」ことを止めることもできます。また、あなたはさておきタイマ(2がある)を使用して、または自動リセットイベントがThread.Sleep() `[DebuggerStepThrough]`、私は」のIs Sleep() evil?

+0

感謝を参照してくださいを使用することが好ましいと

をやっているときにそれらの凍結を解除することを忘れないでください以前はそれについて考えていましたが、それはプロパティのためだと思っていました。たぶん私は 'Thread.Sleep()'で私の立場を再考すべきです。私はタイマーは、それが動作する完全な方法のための最良のアイデアだとは思わない。方法をスケジュールする.NET 2.0の方法はありますか? –

+1

さて、私はBgWorkerを完成させました。私はこれを使いました: 'TimerCallback tc = new TimerCallback(bw.RunWorkerAsync); System.Threading.Timer t = new System.Threading.Timer(tc、null、Interval、Timeout.Infinite); ' –

関連する問題