2009-09-09 6 views
3

어쩌면 이것은 바보 같은 질문 일 수 있지만 이벤트 리스너는 타이머와 같은 CPU 사이클을 사용합니까, 아니면 이벤트가 시작될 때까지 비활성 상태입니까?CPU 시간을 사용하는 이벤트 리스너

언어가 특정 언어입니까 아니면 모든 언어가 기본적으로 동일합니까?

네트워크 연결 끊기 이벤트가 발생했을 때 아무것도하지 않는 작은 서비스를 작성하고 싶습니다. 서비스가 방금 듣고있는 리소스 (물론 메모리가 아닌)를 사용하지 않기를 바랍니다. 이벤트가 실제로 해고 (및 이벤트 처리기가 호출)까지

나는 어떤 CPU 시간을 사용하지 않는이

using NetworkUtilities; 
    ManagementEventWatcher networkAdapterArrivalWatcher = new ManagementEventWatcher("\\root\\wmi","SELECT * FROM MSNdis_NotifyAdapterArrival "); 
        networkAdapterArrivalWatcher.Options.Timeout = new TimeSpan(0,0,5); 

    ManagementEventWatcher networkAdapterRemovalWatcher = new ManagementEventWatcher("\\root\\wmi","SELECT * FROM MSNdis_NotifyAdapterRemoval "); 
        networkAdapterRemovalWatcher.Options.Timeout = new TimeSpan(0,0,5); 

    ConnectionNotifierHandler handler = new ConnectionNotifierHandler(); 
        networkAdapterArrivalWatcher.EventArrived += new EventArrivedEventHandler(handler.Arrived); 
        networkAdapterRemovalWatcher.EventArrived += new EventArrivedEventHandler(handler.Removed); 

    //Start watching for events 
    networkAdapterArrivalWatcher.Start(); 
    networkAdapterRemovalWatcher.Start(); 

    public void Arrived(object sender, EventArrivedEventArgs e) 
    { 
      using (ManagementBaseObject ev = e.NewEvent) 
      { 
       //Log the event 
      } 
    } 

    public void Removed(object sender, EventArrivedEventArgs e) 
    { 
      using (ManagementBaseObject ev = e.NewEvent) 
      { 
       //Log the event 
      }   
    } 

답변

2

C#에서 이벤트는 "온 디맨드 (on-demand)"라고 불리는 함수 위임자 (함수 위임자) 일 뿐이며 여분의 CPU주기는 사용하지 않습니다.

하지만, 당신이 좋아하는 이벤트를 모니터링을 참조하는 경우 : 일부 소켓 리스너

  • OnConnecitonPending.
  • OnWindowMessage 윈도우 응용 프로그램 용.

나는 이벤트를 모니터하기 위해 스레드를 사용해야하며 물론 추가 CPU가 필요하다고 생각합니다.

1

이벤트 리스너처럼 뭔가를 할 계획입니다.

이벤트 리스너와 관련된 백그라운드 프로세스가 없습니다.

1

일반적으로 이벤트 수신 시스템에 내장 된 이벤트 리스너는 이벤트가 시작될 때까지 CPU 시간을 사용하지 않습니다. 오히려 이벤트에 의해 트리거되는 델리게이트입니다. 사건에 대한 그들의 관심은 시스템에 의해 기록됩니다. 예를 들어, Objective-C/Cocoa 스타일의 대리자를 사용하는 것이 가장 확실합니다. 그러나이 원칙은 거의 모든 곳에서 적용됩니다.