2012-02-11 1 views
1

저는 C# Windows 응용 프로그램을 사용하고 있습니다. 다른 클래스를 자체 스레드에서 시작하는 곳에서 작업하고 있습니다 (예 : 스레드 1의 Class1 인스턴스, 스레드 2의 클래스 2 인스턴스, 기타).스레드 및 다른 클래스로 모니터 잠금을위한 공유 변수

스레드를 올바르게 일시 중단/재개하려고하는데 다른 클래스와 스레드 간의 모니터 대기/펄스에 대한 잠금 변수를 공유하는 방법을 알아낼 수 없습니다.

간단한 답변이 있어야하는 것 같습니다. 알아낼 수 없습니다. 나는 정말 어떤 도움을 주셔서 감사합니다!

감사합니다. 전 대한

+3

'간단한 답변이 있어야합니다. '- 귀하의 문제를 보았습니다. – Hogan

+0

@ L.B. 문제를 완전히 이해하지 않고 "정적"에 대해 논평하는 것은 어렵지만 "공개 필드"를 정당화하기 위해 문제/질문에 아무것도 없습니다 (아, 삭제 된 의견과 관련이 있음) –

답변

1

사용하는 공공 static 필드,.,

public class Sync 
{ 
    public static object LockObject = new object(); 
    //or any other sync mechanism 
    //AutoResetEvent,ManualResetEvent,Semaphore,CountdownEvent,Mutex etc. 
} 
+0

그렇다면 그냥 Sync :: ManuelResetEventObj를 호출하거나 메인 클래스 나 thread 클래스에서 무엇을하지 않겠습니까? – Harry

+0

예'Sync.LockObject'는 모든 스레드 또는 메인 클래스에서 사용할 수 있습니다. –

+0

고마워요. 동시에 여러 스레드가 일시 중단되는 배열로 LockObject를 만들 수 있습니까? – Harry

0

모니터 잠금 shnchronization 유용하지만 정확히 알 필요가 있기 때문에 그것은 보통, 두 개의 스레드로 확장되는 메시징 API로 사용하는 경우 각자가 메시지를 받으면 알 수있는 곳.

상황이 복잡해지면 AutoResetEvent 또는 ManualResetEvent는 시간이 중요하지 않으므로 일반적으로 더 유용합니다. 주문에 관계없이 게이트를 통과합니다.