また、Thread..::.Suspend を呼び出すと、スレッドを一時中断することもできます。Thread..::.Suspend をスレッドに呼び出すと、その呼び出しは、別のスレッドがそのスレッドを再開するまでそのスレッドをブロックします。スレッドが別のスレッドで Thread..::.Suspend を呼び出した場合、その呼び出しは非ブロッキング呼び出しであり、この呼び出しによって他のスレッドは一時中断されます。Thread..::.Resume を呼び出すと、Thread..::.Suspend が呼び出された回数に関係なく、別のスレッドが中断状態から出され、実行を再開します。たとえば、Thread..::.Suspend を 5 回連続して呼び出した後に Thread..::.Resume を呼び出すと、スレッドは、Thread..::.Resume の呼び出しの直後に実行を再開します。
Thread..::.Sleep とは異なり、Thread..::.Suspend を呼び出した場合、スレッドはすぐには実行を停止しません。共通言語ランタイムは、スレッドを中断する前に、そのスレッドがセーフ ポイントに到達するまで待機する必要があります。スレッドは、起動されていない場合や停止されている場合は、中断できません。セーフ ポイントの詳細については、「Thread.Suspend、ガベージ コレクション、およびセーフ ポイント」を参照してください。
アプリケーションによっては、パフォーマンスを向上させるために、スレッドの優先順位を制御する必要がある場合があります。スレッドの優先順位を制御するには、Thread..::.Suspend ではなく Priority プロパティを使用する必要があります。