2011-07-11 23 views
-1

後、私は素晴らしい実行され、それは、スレッドの間、後にちょうどんが、例外がキャッチされていないと、タイマーへの参照ではありません...タイムスレッドはちょうどしばらく

消えC#(System.Threading.Timer)でタイマーを持って停止します紛失しました(したがって、GCによって収集されません)

これを引き起こす原因は他にありますか?

助けを

おかげで(私はここのコードを投稿することはできません):)

+3

1.何が起こっているのかを理解するためのコードを入力します。 2. VS:Debug-> Exceptionsで未処理の例外処理を有効にするかどうかを確認します。 – Tigran

+0

@Tigranポストに追加するだけです:未処理の例外をキャッチするには、次のようにVSを調整します:1)Debug - > Exceptionsダイアログに移動し、Common Language Runtime ExceptionsをチェックしてThrow列のチェックボックスをチェックします。 2)[ツール] - > [オプション] - > [デバッグ]の順に進み、[自分のコードを有効にする(管理対象のみ)]チェックボックスをオフにします。例外が見えますか? – platon

+2

'Timer'では専用のスレッドが必要ですか? ([Timer'のドキュメントページの注釈の最初の段落](http://msdn.microsoft.com/library/system.threading.timer.aspx)によれば、コールバックは常にスレッドプールで実行されます。) – Richard

答えて

2

コールバック内部のコードが完全に有効な誰かが誤ってあなたのプロジェクトとシステムでのThreadPoolスレッドで動作可能であったとしても。 Threading.Timerは、ThreadPoolスレッドを使用してコールバックを処理するため、タイマーコールバックを処理するために空きスレッドが不足することがあります。

関連する問題