Получать смс всякий раз, когда приходит смс в приложении winform c # - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь создать настольное приложение, которое будет получать смс при поступлении в модем, и отправлять сообщение на веб-сервер, а тем временем в фоновом режиме выполняется другая задача. Я использую GSMLibrary для этой цели. Мой модем GSM модем. Я использовал обработчик получения сообщений GSMLibrary, но мне не удается прочитать сообщение.

Я использую backgroundworker для поддержания процесса в рабочем состоянии.

Я инициализировал обработчик событий в backgroundworker, Вот так,

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e){
    BackgroundWorker worker = sender as BackgroundWorker;

    GsmCommMain comm = new GsmCommMain("COM9", 115200, 3000);
    comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived1);

    while(!worker.CancellationPending){
         Task(params);
    }
}

Now My Event Handler,

private void comm_MessageReceived1(object sender, MessageReceivedEventArgs e){
        var obj = e.IndicationObject;
        if (obj is MemoryLocation)
        {
            var loc = (MemoryLocation)obj;

            GsmCommMain comm = (sender as GsmCommMain);
            DecodedShortMessage messages = comm.ReadMessage(loc.Index, loc.Storage);
            comm.DeleteMessage(loc.Index, loc.Storage);
            return;
        }
}

Так что, когда я отлаживал, я обнаружил, что в обработчике сообщений строка DecodeShortMessage выполняется, а затем идет вниз до comm.Delete, он переходит к задаче фонового рабочего. Также значение сообщения остается нулевым.

Что я здесь не так делаю? Как я мог заставить это работать. Заранее спасибо.

...