si "lo" (
) fatta io.
ho modificato un po il codice per commentare meglio i passaggi:
codice:
#region sms non letti
private void button2_Click(object sender, EventArgs e)
{
this.listBox2.Items.Clear();
System.Threading.Thread t = new System.Threading.Thread(RunThread_button2);//creo un nuovo thread
t.Start();//avvio il thread
}
void RunThread_button2()
{
SwitchBoard.SMSFolder cartella = SwitchBoard.SMSFolder.Unread;//indico che mi servono sms non letti
ATC_SMS.SMSReceivedEventHandler metodoRicevente = new ATC_SMS.SMSReceivedEventHandler(Logicall_NotReadSMS_Received);//passo il nome del metodo che riceverà la risposta con gli sms
ATC_SMS comandoSMS = SwitchBoard.GetCommandReadSMS(cartella, metodoRicevente);//con questo creo un comando già configurato da inviare a switchBoard
this.switchBoard.Enqueue(comandoSMS, this.portInUse);//accodo il comando a switchBoard che provvederà a elaborare il tutto attraverso la porta com collegata al modem (il nome devi settarlo in portInUse "com1" o "com2" o dove si trova il modem).
}
void NotReadSMS_Received(object sender, SMS result)
{
this.listBox2.Items.Add("Numero mittente : " + result.PhoneNumber);
this.listBox2.Items.Add("Testo : " + result.Message);
this.listBox2.Items.Add("-------------------");
}
void Logicall_NotReadSMS_Received(object sender, SMS result)
{
if (this.InvokeRequired)//questo è necessario per modificare un elemento del form da un thread diverso
{
ATC_SMS.SMSReceivedEventHandler d = new ATC_SMS.SMSReceivedEventHandler(NotReadSMS_Received);
this.Invoke(d, sender, result);//chiamo il metodo che mi elabora il risultato scrivendo nella listbox gli sms attraverso un delegato
}
else
{
NotReadSMS_Received(sender, result);//chiamo il metodo che mi elabora il risultato scrivendo nella listbox gli sms
}
}
#endregion
EDIT: nella demo ho scritto numero destinatario ma chiaramente era mittente