タイトル : Re^3: なにもないEXEなのにスレッドが4 投稿日 : 2008/02/09(Sat) 06:21 投稿者 : Hongliang
むしろシングルスレッドだからこその挙動だと思いますよ。 マルチスレッドの場合、5 秒かかってる処理の間に次の処理が走り順番崩壊、ってことになります。 Windows のウィンドウシステムはメッセージが中心になって動いています。入力や再描画要求などが発生すると、メッセージが発行されアプリケーションが持つメッセージキューに蓄えられます。アプリケーションはメッセージキューから順次メッセージを取り出し、そのメッセージに対応する処理を行います。 System.Windows.Forms.Timer は WM_TIMER メッセージを使ったタイマです。WM_TIMER は OS から定期的に送信され、メッセージキューに追加されます。このとき、今何もやってないならメッセージが来た直後にメッセージを取り出して処理を行えますが、今忙しいならしばらくメッセージキューからメッセージを取り出すことができず、未処理のメッセージがどんどん溜まっていくことになります。当然、WM_TIMER も同様に溜まっていくわけで、忙しい処理が終わった後、どっさり積まれた WM_TIMER を続けざまに処理することになります。 |