Thread.BeginCriticalRegion 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
스레드 중단 또는 처리되지 않은 예외로 인해 애플리케이션 도메인의 다른 작업이 손상될 수 있는 코드 영역이 실행될 수 있다는 사실을 호스트에 알립니다.
public:
static void BeginCriticalRegion();
public static void BeginCriticalRegion ();
static member BeginCriticalRegion : unit -> unit
Public Shared Sub BeginCriticalRegion ()
예제
다음 예제에서는 BeginCriticalRegion 및 메서드를 사용 하 여 EndCriticalRegion 코드 블록을 중요 하 고 중요 하지 않은 영역으로 나누는 방법을 보여 줍니다.
using namespace System::Threading;
public ref class MyUtility
{
public:
void PerformTask()
{
// Code in this region can be aborted without affecting
// other tasks.
//
Thread::BeginCriticalRegion();
//
// The host might decide to unload the application domain
// if a failure occurs in this code region.
//
Thread::EndCriticalRegion();
//
// Code in this region can be aborted without affecting
// other tasks.
}
};
using System.Threading;
public class MyUtility
{
public void PerformTask()
{
// Code in this region can be aborted without affecting
// other tasks.
//
Thread.BeginCriticalRegion();
//
// The host might decide to unload the application domain
// if a failure occurs in this code region.
//
Thread.EndCriticalRegion();
//
// Code in this region can be aborted without affecting
// other tasks.
}
}
Imports System.Threading
Public Class MyUtility
Public Sub PerformTask()
' Code in this region can be aborted without affecting
' other tasks.
'
Thread.BeginCriticalRegion()
'
' The host might decide to unload the application domain
' if a failure occurs in this code region.
'
Thread.EndCriticalRegion()
' Code in this region can be aborted without affecting
' other tasks.
End Sub
End Class
설명
Microsoft SQL Server 2005와 같은 CLR (공용 언어 런타임)의 호스트는 중요 하 고 중요 하지 않은 코드 영역에서 발생 하는 오류에 대해 서로 다른 정책을 설정할 수 있습니다. 중요 한 지역은 스레드 중단 또는 처리 되지 않은 예외가 현재 작업으로 제한 되지 않는 것입니다. 이와 대조적으로 중요 하지 않은 코드 영역의 중단 또는 오류는 오류가 발생 한 작업에만 영향을 줍니다.
예를 들어 잠금을 보유 하는 동안 메모리를 할당 하려고 하는 작업을 고려 합니다. 메모리 할당이 실패 하는 경우의 안정성을 보장 하기 위해 현재 작업을 중단 하는 데 충분 하지 않습니다 AppDomain . 동일한 잠금에 대해 대기 하는 도메인의 다른 태스크가 있을 수 있기 때문입니다. 현재 작업이 종료 되 면 다른 작업은 교착 상태가 될 수 있습니다.
중요 한 지역에서 오류가 발생 하는 경우 호스트는 AppDomain 잠재적으로 불안정 한 상태로 실행을 계속할 수 있는 위험을 초래 하는 것이 아니라 전체를 언로드할 수 있습니다. 코드가 중요 한 영역을 입력 하 고 있음을 호스트에 알리려면를 호출 BeginCriticalRegion 합니다. EndCriticalRegion실행이 중요 하지 않은 코드 영역으로 반환 될 때를 호출 합니다.
SQL Server 2005에서 실행 되는 코드에서이 메서드를 사용 하려면 가장 높은 호스트 보호 수준에서 코드를 실행 해야 합니다.