Event WaitHandle 자신의 매듭
3933 단어 event
EventWaitHandle은 각 스레드 간에 서로 신호를 주고받는다.
우선: 이벤트가 처음에 종료 상태일 경우, 첫 번째waitone () 때는 라인 막힘을 하지 않고, 비 종료 상태일 때, 첫 번째waitone () 때는 라인 막힘을 합니다.물론 이 상태도 결합된 이벤트레스트모드의 값을 결합해서 사용해야 한다.
EventResetMode.AutoReset 자동 재설정, 즉 이벤트 상태를 자동으로 재설정합니다. 자동이면 첫 번째 waitone 이후 이벤트를 비종료 상태로 변경합니다.이와 같이 {수동으로 이벤트를 초기화하여 종료 상태로 초기화하면 첫 번째waitone () 은 루틴을 막지 않지만, 이벤트 상태를 비종료 상태로 즉시 변경합니다. 이후waitone () 는 루틴을 막습니다}
EventResetMode.ManualReset은 수동으로 리셋합니다. 스레드의 막힘에 대해 이전 매개 변수가 종료 상태인지 여부를 결정합니다. 즉, 초기값이 종료 상태로 설정되면 스레드가 수동으로 설정되지 않으면 스레드 막힘을 하지 않습니다. 초기값이 비종료 상태이면 모든 웨이온 () 이 막힙니다.set () 같은 방법을 수동으로 사용해서 종료 상태로 설정하지 않으면
다음은 코드 예입니다.
class Program
{
//static EventWaitHandle wait = new EventWaitHandle(true, EventResetMode.AutoReset); //
static EventWaitHandle waitM = new EventWaitHandle(false, EventResetMode.ManualReset);//
static void Main(string[] args)
{
Console.WriteLine("1 " + DateTime.Now);
Thread thread = new Thread(S);
thread.Start();
Thread.Sleep(3000);
//wait.Set();// 。
waitM.Set(); // 。
Console.Read();
}
public static void S()
{
waitM.WaitOne(3000); // , ,
//wait.WaitOne(); // , ,
Console.WriteLine("2 " + DateTime.Now);
waitM.WaitOne(3000); // set() ,
// wait.WaitOne(3000); // ,
Console.WriteLine("3 " + DateTime.Now);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Event 이벤트 브라우저 간 패키지텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.