tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 を続けざまに処理することになります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。