이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

Thread.BeginThreadAffinity 메서드

업데이트: 2007년 11월

관리되는 코드가 현재 실제 운영 체제 스레드의 ID에 종속되는 명령을 실행하려고 한다는 사실을 호스트에 알립니다.

네임스페이스:  System.Threading
어셈블리:  mscorlib(mscorlib.dll)

[SecurityPermissionAttribute(SecurityAction.LinkDemand, ControlThread = true)]
public static void BeginThreadAffinity()
/** @attribute SecurityPermissionAttribute(SecurityAction.LinkDemand, ControlThread = true) */
public static void BeginThreadAffinity()
public static function BeginThreadAffinity()
예외상황
SecurityException

호출자에게 필요한 권한이 없는 경우

Microsoft SQL Server 2005 등의 일부 공용 언어 런타임 호스트에서는 자체적으로 스레드 관리 기능을 제공합니다. 자체적으로 스레드 관리 기능을 제공하는 호스트는 실행 중인 작업을 언제든지 하나의 실제 운영 체제 스레드에서 다른 스레드로 이동할 수 있습니다. 대부분의 작업은 이러한 이동의 영향을 받지 않지만 일부 작업은 스레드 선호도를 갖습니다. 즉, 실제 운영 체제 스레드의 ID에 종속됩니다. 이러한 작업은 이동되면 안 되는 코드를 실행할 때 호스트에 알려야 합니다.

예를 들어, 응용 프로그램이 Win32 CRITICAL_SECTION과 같이 스레드 선호도를 갖는 운영 체제 잠금을 획득하기 위해 시스템 API를 호출할 경우 잠금을 획득하기 전에 BeginThreadAffinity를 호출하고 잠금을 해제한 후에 EndThreadAffinity를 호출해야 합니다.

SQL Server 2005에서 실행되는 코드에서 이 메서드를 사용하려면 가장 높은 호스트 보호 수준에서 코드를 실행해야 합니다.

다음 예제에서는 BeginThreadAffinityEndThreadAffinity 메서드를 사용하여 코드 블록이 실제 운영 체제 스레드의 ID에 종속됨을 호스트에 알리는 방법을 보여 줍니다.

using System.Threading;
using System.Security.Permissions;

[SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlThread)]
public class MyUtility
{
    [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlThread)]
    public void PerformTask()
    {
        // Code that does not have thread affinity goes here.
        //
        Thread.BeginThreadAffinity();
        //
        // Code that has thread affinity goes here.
        //
        Thread.EndThreadAffinity();
        //
        // More code that does not have thread affinity.
    }
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0에서 지원
이 정보가 도움이 되었습니까?
(1500자 남음)

커뮤니티 추가 항목

추가
© 2013 Microsoft. All rights reserved.