投稿者 るしぇ  (社会人) 投稿日時 2009/8/26 01:59:11
理論の方で補足します。

画面の描画処理もまたプログラムです。
プロパティの値を見てディスプレイ上に四角形を書くプログラム
だと思ってください。
そして、そのプログラムは自分で書かないだけで(Microsoftが書いて
くれてるだけで)自分でプログラミングした関数と同等と思ってください。

何か1つのプログラムが実行されている場合、CPU は1個ですので
実行される処理も1つです。
後から命令された処理(※ただしイベント起動のもの)は、実行できる
状態になるまで待機状態になります。

プログラムコードを基準に言えば、1つの関数内のコードは
1セットとして扱われ、関数を抜けるまでに他の処理の実行命令
(イベント)が起こった場合、待機状態になります。

>PictureBox1.BackColor = Color.GreenYellow
>System.Threading.Thread.Sleep(200)
>PictureBox1.BackColor = Color.Gold
これらを1つの関数(Timer.Tick イベント関数)内に書いて
あれば、Color.GreenYellow が画面に表示されることは無く、
Color.Gold になった後、関数を抜け、その後から実行される
再描画処理が、プロパティを確認し、Color.Gold で描画します。

この処理順に関しては Sleep が無くても同じです。
Sleep があっても描画処理が走る条件は満たしません。
・・・関数内の処理が実行中のままなのですから、当然
描画処理は待機状態のままになります。

このとき、別のプロセスがコンピュータ上で動いていた場合、
CPU を使ってない状態になるため、実行されます。
つまりこのプログラムと全く関係ないエクセルファイルを
開いていたとして、このプログラムのために CPU を100%
使っていて、エクセルファイルの表示処理にまで影響を与えて
いるような状態だった時、こちらのプログラムが Sleep
すると CPU に処理を実行する余裕ができます。すると
エクセルファイルで保留にされていた処理が実行される
場合はあります。

Sleep がどんな命令か調べたことありますか?
そこに書いてあった説明をどの程度理解していますか?
http://msdn.microsoft.com/ja-jp/library/cc429358.aspx
Sleep は「実行を中断」
つまり「自分のプログラムで何も処理しない」という
だけですよ。