1

Windows Mobile 전화에 기본 SMS 가로 채기 응용 프로그램이 있습니다. 현재이 프로그램은 MessageInterceptor 클래스의 MessageReceived 이벤트를 연결하는 콘솔 응용 프로그램입니다.이벤트 연결 및 이후 응용 프로그램 관련 작업

내 프로그램이 완료되면 실행 한 후에 내 필터는 내 필터와 일치하는 SMS를 수신 할 때 내 이벤트 핸들러가 계속 해고 될 때까지 '바쁜 서클'을 표시합니다.

다른 몇 가지 시도를했습니다. 는 CodePlex에서

  • ManagedServicesWM 프로젝트 -이 내가 필요로하는 것에 대해 지나치게 복잡 내 applicaion 전지 전원의 허리를 Thead.Sleep (200)와 무한 루프로 판명 이렇게도했다.
  • ConsoleingReading(); -하지만 표준 입력은 WM 콘솔 앱에 대해서는 null 인 것으로 보이므로 아무 것도하지 않았습니다.
  • 양식 응용 프로그램을 사용하면 내 기본적인 응용 프로그램이 복잡해지고 멀티 스레드가 발생하지 않고 내 쓸데없는 형태가되었습니다.

그러나 이러한 대체 제품은 내 콘솔 앱만큼 좋지는 않지만 올바른 anwser 에테르처럼 느껴지지 않습니다.

그래서 어떤 사람이이 스타일의 앱을 구현하는 방법에 대해 다른 아이디어를 가지고 있는지 궁금 해서요. 그리고 어느 시점에서 내 응용 프로그램이 Windows 메모리 관리자에 의해 종료 될 수도 있습니다. 당신이 시도 대신 OPENNETCF을 사용할 수

+0

이 질문을 명확히 할 수 있습니까? 당신이 요구하는 것을 정확하게 파악하는 것은 약간 어렵습니다. 나는 당신의 앱이 메모리에 앉아서 휴대 전화로 오는 모든 SMS 메시지에 응답하기를 원한다고 생각하지만, 대기 커서가 콘솔 앱과 같이 나타나지 않게하고 싶다. 귀하의 앱이 Windows Mobile에 의해 종료되지 않았는지 확인하십시오. 이 올바른지? – MusiGenesis

+0

그건 맞습니다 – squig

답변

1

사용 후 몇 달 후 콘솔 응용 프로그램이 Windows 메모리 관리자에 의해 종료되는 것을 보지 못했습니다. 재설정 후 응용 프로그램을 시작할 때 "바쁜 동그라미"를 제외하고 모두 제대로 작동하는 것 같습니다.

내 배터리 전원이 잘 들지 않는 것처럼 보입니다. 배터리 수명을 상당히 단축시킨 무한 루프, ManagedServicesWM 및 OpenNetCF 옵션 중 일부가 더 좋습니다.

+0

그럼, 정확하게, 당신의 해결책은 무엇입니까? – ctacke

+0

교수형 콘솔 앱, 필요한 이벤트를 연결 한 다음 '종료' – squig

1

내가 문제를 이해 모른다. 들어오는 SMS를 모니터링하는 UI가없는 앱을 원하지만 정확한 문제가 무엇인지 알 필요가 없습니다.

나는 일반적인 절차는 다음과 같이 기대 :

static class Program 
{ 
    static MessageInterceptor interceptor; 

    static void Main() 
    { 
     Thread listener = new Thread(new ThreadStart(
      delegate 
      { 
       interceptor = new MessageInterceptor(InterceptionAction.Notify, false); 
       interceptor.MessageReceived += new MessageInterceptorEventHandler(OnMessageReceived); 
      })); 
     listener.IsBackground = true; 
     listener.Start(); 

     EventWaitHandle eh = new EventWaitHandle(false, EventResetMode.AutoReset, "MyShutdownEventName"); 

     while (!eh.WaitOne(1000, true)) 
     { 
      // do nothing 
     } 

     interceptor.Dispose(); 
    } 

    static void OnMessageReceived(object sender, MessageInterceptorEventArgs e) 
    { 
     DoSomething(); 
    } 
} 

는 "그러나 잠깐, 당신은 거기에 무한 루프를 가지고, 그 내 배터리를 죽일거야"당신이 말하는? 거의. WinForms 앱이 어떻게 작동한다고 생각하십니까? 그들은 놀랍게도 무한 루프 인 메시지 펌프를 가지고 있습니다. 초당 한 번 깨우면 전원 프로필에 아무런 영향을 미치지 않을 것입니다.

정말 걱정된다면 타임 아웃을 Timeout.Infinite로 변경할 수 있지만 Infinite를 사용하면 코드 검토에서 나에게서 즉각적인 부정적인 포인트를 얻을 수 있습니다. 무한 대기는 드라이버를 사용하지 않는 사람에게는 적용 할 수없는 매우 드문 경우입니다 (심지어는 거의 사용하지 않습니다). 무한 대기는 스케줄러에게 종료하지 않기 때문에 알립니다.

관련 문제