MessageInterceptor не запускается во второй раз с окном мобильного приложения - PullRequest
0 голосов
/ 14 июня 2009

Я пытаюсь получить автоматический ответ на сообщение в Windows Mobile. Я использую класс MessageInterceptor, который, кажется, работает в первый раз. Но, похоже, это не работает в течение нескольких секунд сообщение! не уверен, что у меня должен быть бесконечный цикл. У меня нет большого опыта разработки под Windows Mobile, поэтому, пожалуйста, предложите лучший способ.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.WindowsMobile;
using Microsoft.WindowsMobile.PocketOutlook;
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;


namespace TextMessage3
{
    public partial class Form1 : Form
    {

        protected MessageInterceptor smsInterceptor = null;

        public Form1()
        {
            InitializeComponent();
            debugTxt.Text = "Calling Form cs";
            //Receiving text message
            MessageInterceptor interceptor = new MessageInterceptor(InterceptionAction.NotifyandDelete);
            interceptor.MessageReceived += SmsInterceptor_MessageReceived;                  
        }

        public void SmsInterceptor_MessageReceived(object sender, 
         MessageInterceptorEventArgs e)
        {
              SmsMessage msg = new SmsMessage();
              msg.To.Add(new Recipient("James", "+16044352345"));
              msg.Body = "Congrats, it works!";
              msg.Send();
              //Receiving text message
              MessageInterceptor interceptor = new MessageInterceptor(InterceptionAction.NotifyAndDelete);
              interceptor.MessageReceived += SmsInterceptor_MessageReceived;   

        }



    }
}

Спасибо,

Tam

1 Ответ

5 голосов
/ 14 июня 2009

Похоже, ваш класс MessageInteceptor удаляется до того, как вы получите второе сообщение, потому что единственная ссылка на объект исчезает, как только вы покидаете конструктор или обработчик событий. Вместо того, чтобы создавать новый объект каждый раз, когда вы получаете сообщение, просто создайте его в конструкторе и установите для него переменную-член. При каждом получении сообщения ваша функция SmsInterceptor_MessageReceived должна вызываться.

public partial class Form1 : Form
    {

        protected MessageInterceptor smsInterceptor = null;

        public Form1()
        {
            InitializeComponent();
            debugTxt.Text = "Calling Form cs";
            //Receiving text message
            this.smsInterceptor  = new MessageInterceptor(InterceptionAction.NotifyandDelete);
            this.smsInterceptor.MessageReceived += this.SmsInterceptor_MessageReceived;                  
        }

        public void SmsInterceptor_MessageReceived(object sender, 
         MessageInterceptorEventArgs e)
        {
              SmsMessage msg = new SmsMessage();
              msg.To.Add(new Recipient("James", "+16044352345"));
              msg.Body = "Congrats, it works!";
              msg.Send();  
        }
    }
...