2009-07-02 5 views
0

C# 응용 프로그램에서 MainThread를 잠그는 방법C# 응용 프로그램에서 주 스레드를 잠그는 방법?

lock (Thread.CurrentThread) // This will give the current running thread 
{ 
// Bolck of Sync Codes 
} 

같은 작업자 스레드가 있습니다 ..하지만 MainThread를 잠글 필요가 있고 일부 코드를 실행해야합니다 ..

누구든지이 .. 나를 도울 수 있습니다 ..

+2

달성하려는 내용을 설명하십시오. –

+3

달성하고자하는 것을 설명해 주시겠습니까? 스레드는 일반적으로 잠긴 것이 아니라 객체 –

답변

2

왜 CurrentThread 개체를 잠글 필요가 있습니까? 다른 스레드의 경우이 값은 달라지며 여러 스레드가이 블록을 입력 할 수 있습니다.

위에서 표시된 블록에 여러 스레드가 들어가는 것을 방지하려면 모든 스레드가 동의 된 공통 개체에 대한 잠금을 획득하려고 시도해야합니다. 내가 제대로 질문을 이해한다면 잘 모르겠어요이

lock(m_objectForLock) 
{ 
    // Block of sync codes 
} 
0

같은 잠금을

private member object m_objectForLock; 

및 같은 멤버를 정의하지만 ..

차단 자동으로 발생하여 스레드를 명시 적으로 비동기 적으로 호출하지 않는 경우 스레드. 블로킹은이 컨텍스트에서는 기능이 아니지만 그 결과입니다.

예제에서 lock을 사용하면 비동기 컨텍스트에서 변수에 명시 적으로 액세스 할 수 있습니다.

1

질문이 불분명하고 울림이 필요합니다.

하지만 여러 개의 정상 스레드간에 개체를 공유하려면 몇 가지 종류의 잠금/동기화 메커니즘을 적용해야합니다.

것은 이 달성 한 가지 방법은 다음과 같은 방법으로 lockobject 사용하는 것입니다

: 당신이 스레드의 실행을 "잡아"하려는 경우, 다른 한편으로

private object _objectLock; 

    private void DoWork() 
    { 
     lock (_objectLock) 
     { 
      //Code to execute 
     } 
    } 

, 당신은 사용을 고려할 수 System.Threading.EventWaitHandle

관련 문제