2012-12-12 6 views
1

가능한 중복 : C# .net의 다른 스레드에서 잠자는 스레드를 깨우는 방법?


Is there a way to wake a sleeping thread?

가 나는 창문이는 C# .NET에서 응용 프로그램을 형성한다. namedpipes를 사용하여 C++ 응용 프로그램과 통신합니다. 통신 부분이 정상적으로 작동 중입니다. 폼로드 이벤트에서 두 개의 백그라운드 스레드를 시작합니다. 그 중 하나는 수신을위한 것입니다. 수신 스레드는 루프 동안 무한합니다. 읽을 데이터가 없을 때 잠자기 상태가되고 데이터가 도착하면 읽은 다음 메시지 대기열 (전역 적으로 생성 됨)에 푸시합니다. 나는 양식을로드 할 때 메시지 대기열을 읽고 UI를 업데이트하기 위해 만든 다른 것을 사용하고 싶습니다. 내가 원하는 것은 두 번째 스레드가 생성 되 자마자 무한의 절전 모드로 들어가야하고 읽기 스레드가 4 개 이상의 메시지를 읽었을 때 수면 스레드를 깨우는 일종의 신호를 생성해야한다는 것입니다. 스레드는 메시지 큐를 비어있을 때까지 처리 한 다음 수신 스레드에서 다른 메시지를 수신 할 때까지 다시 대기 상태로 돌아갑니다.

+0

전혀 잠을 자지 마십시오. 스레드는 항상 파이프 스트림의 Read() 메서드를 호출합니다. –

+0

그게 내가 생각한 것입니다,하지만 나는받은 데이터를 처리하고 싶습니다. 그리고 나는 다음에 올 데이터를 놓치고 싶지 않습니다. 그래서 다른 스레드에 의해 수행되는 처리를 원한다.이 스레드가 뭔가를 수신 할 때만 깨어 있어야한다. –

답변

관련 문제