Thread.IsBackground プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As Thread Dim value As Boolean value = instance.IsBackground instance.IsBackground = value
/** @property */ public boolean get_IsBackground () /** @property */ public void set_IsBackground (boolean value)
このスレッドがバックグラウンド スレッドである場合またはバックグラウンド スレッドになる場合は true。それ以外の場合は false。


スレッドは、バックグランド スレッドかフォアグラウンド スレッドのいずれかになります。バックグラウンド スレッドは、プロセスの終了を回避しないという点を除けば、フォアグラウンド スレッドと同じです。プロセスに属するすべてのフォアグラウンド スレッドが終了すると、共通言語ランタイムはそのプロセスを終了します。残りのバックグラウンド スレッドは停止され、完了しません。

フォアグラウンド スレッドとバックグラウンド スレッドの動作を比較する例を次に示します。この例では、フォアグラウンド スレッドとバックグラウンド スレッドが作成されます。フォアグラウンド スレッドは、プロセスが while ループを完了するまでプロセスを実行し続けます。フォアグラウンド スレッドが完了すると、プロセスは、バックグラウンド スレッドが while ループを完了する前に終了されます。
Imports System Imports System.Threading Public Class Test <MTAThread> _ Shared Sub Main() Dim shortTest As New BackgroundTest(10) Dim foregroundThread As New Thread(AddressOf shortTest.RunLoop) foregroundThread.Name = "ForegroundThread" Dim longTest As New BackgroundTest(50) Dim backgroundThread As New Thread(AddressOf longTest.RunLoop) backgroundThread.Name = "BackgroundThread" backgroundThread.IsBackground = True foregroundThread.Start() backgroundThread.Start() End Sub End Class Public Class BackgroundTest Dim maxIterations As Integer Sub New(maximumIterations As Integer) maxIterations = maximumIterations End Sub Sub RunLoop() Dim threadName As String = Thread.CurrentThread.Name For i As Integer = 0 To maxIterations Console.WriteLine("{0} count: {1}", _ threadName, i.ToString()) Thread.Sleep(250) Next i Console.WriteLine("{0} finished counting.", threadName) End Sub End Class
using System; using System.Threading; class Test { static void Main() { BackgroundTest shortTest = new BackgroundTest(10); Thread foregroundThread = new Thread(new ThreadStart(shortTest.RunLoop)); foregroundThread.Name = "ForegroundThread"; BackgroundTest longTest = new BackgroundTest(50); Thread backgroundThread = new Thread(new ThreadStart(longTest.RunLoop)); backgroundThread.Name = "BackgroundThread"; backgroundThread.IsBackground = true; foregroundThread.Start(); backgroundThread.Start(); } } class BackgroundTest { int maxIterations; public BackgroundTest(int maxIterations) { this.maxIterations = maxIterations; } public void RunLoop() { String threadName = Thread.CurrentThread.Name; for(int i = 0; i < maxIterations; i++) { Console.WriteLine("{0} count: {1}", threadName, i.ToString()); Thread.Sleep(250); } Console.WriteLine("{0} finished counting.", threadName); } }
using namespace System; using namespace System::Threading; ref class BackgroundTest { private: int maxIterations; public: BackgroundTest( int maxIterations ) { this->maxIterations = maxIterations; } void RunLoop() { String^ threadName = Thread::CurrentThread->Name; for ( int i = 0; i < maxIterations; i++ ) { Console::WriteLine( "{0} count: {1}", threadName, i.ToString() ); Thread::Sleep( 250 ); } Console::WriteLine( "{0} finished counting.", threadName ); } }; int main() { BackgroundTest^ shortTest = gcnew BackgroundTest( 10 ); Thread^ foregroundThread = gcnew Thread( gcnew ThreadStart( shortTest, &BackgroundTest::RunLoop ) ); foregroundThread->Name = "ForegroundThread"; BackgroundTest^ longTest = gcnew BackgroundTest( 50 ); Thread^ backgroundThread = gcnew Thread( gcnew ThreadStart( longTest, &BackgroundTest::RunLoop ) ); backgroundThread->Name = "BackgroundThread"; backgroundThread->IsBackground = true; foregroundThread->Start(); backgroundThread->Start(); }
import System.*; import System.Threading.*; import System.Threading.Thread; class Test { public static void main(String[] args) { BackgroundTest shortTest = new BackgroundTest(10); Thread foregroundThread = new Thread(new ThreadStart(shortTest.RunLoop)); foregroundThread.set_Name("ForegroundThread"); BackgroundTest longTest = new BackgroundTest(50); Thread backgroundThread = new Thread(new ThreadStart(longTest.RunLoop)); backgroundThread.set_Name("BackgroundThread"); backgroundThread.set_IsBackground(true); foregroundThread.Start(); backgroundThread.Start(); } //main } //Test class BackgroundTest { private int maxIterations; public BackgroundTest(int maxIterations) { this.maxIterations = maxIterations; } //BackgroundTest public void RunLoop() { String threadName = Thread.get_CurrentThread().get_Name(); for (int i = 0; i < maxIterations; i++) { Console.WriteLine("{0} count: {1}", threadName, String.valueOf(i)); Thread.Sleep(250); } Console.WriteLine("{0} finished counting.", threadName); } //RunLoop } //BackgroundTest

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からThread.IsBackground プロパティを検索する場合は、下記のリンクをクリックしてください。

- Thread.IsBackground プロパティのページへのリンク