DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

指定した時間停止する

Thread.Sleepメソッド

指定した時間だけ現在のスレッドを停止するには、Thread.Sleepメソッドを使います。

Windowsフォームアプリケーションのメインスレッド(UIスレッド)を停止した時は、停止している間、フリーズしたように一切の操作ができなくなります。

VB.NET
コードを隠すコードを選択
'一秒間(1000ミリ秒)停止する
System.Threading.Thread.Sleep(1000)
C#
コードを隠すコードを選択
//一秒間(1000ミリ秒)停止する
System.Threading.Thread.Sleep(1000);

Thread.SpinWaitメソッド

指定した時間現在のスレッドを停止するメソッドに、Thread.SpinWaitメソッドというものもあります。Thread.SpinWaitメソッドは、Thread.Sleepメソッドのように時間を秒単位で指定するのではなく、ループカウント(ループする回数)で指定します。そのため、同じ数値を指定しても、待機する時間はCPUによって変わります。

Thread.SpinWaitメソッドは、Thread.Sleepメソッドと違い、ループすることで待機しますので、CPUをほぼ100%占有します。また、Thread.Sleepメソッドを呼び出した場合は、残りのタイムスライスを放棄して、実行の準備ができている他のスレッドに処理を回しますが、Thread.SpinWaitメソッドの場合はそうしません。

Thread.SpinWaitメソッドはスレッドの同期のために内部で使用されているようですが、通常は私たちが使用する機会はないでしょう。

  • 履歴:
  • 2016/5/1 Thread.SpinWaitメソッドの説明を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。