Thread.IsBackground 속성
스레드가 배경 스레드인지 여부를 나타내는 값을 가져오거나 설정합니다.
네임스페이스: System.Threading
어셈블리: mscorlib(mscorlib.dll)
구문
‘선언
Public Property IsBackground As Boolean
‘사용 방법
Dim instance As Thread
Dim value As Boolean
value = instance.IsBackground
instance.IsBackground = value
public bool IsBackground { get; set; }
public:
property bool IsBackground {
bool get ();
void set (bool value);
}
/** @property */
public boolean get_IsBackground ()
/** @property */
public void set_IsBackground (boolean value)
public function get IsBackground () : boolean
public function set IsBackground (value : boolean)
속성 값
이 스레드가 배경 스레드이거나 배경 스레드가 될 예정이면 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에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
2.0, 1.1, 1.0에서 지원
.NET Compact Framework
2.0에서 지원
참고 항목
참조
Thread 클래스
Thread 멤버
System.Threading 네임스페이스