il thread chiama listen e ascolta l'evento, è una telefonata, al che il lavoro passa alla dll e ritorn il chiamante che viene cercato. search fa la query e mostra il form, ma a questo punto pare non arrivarci mai senza punti di interruzione.codice:public tapicom tapi; public Thread tapi_thread; public delegate void delegatesearch(string pcaller); //...altre variabili //costruttore public frm_whois() { InitializeComponent(); //...altre variabili this.tapi_thread = new Thread(new ThreadStart(this.listen)); this.tapi_thread.Start(); } //metodo chiamato da thread public void listen() { while (this.tapi_thread.ThreadState == ThreadState.Running) { if (this.tapi.tpc_callinfo == "OFFERING") { this.search(this.tapi.tpc_caller); this.tapi_thread.Suspend(); } } }
aggiungo una nota rilevante:
dato che questa applicazione non si chiude al clic sulla x, perchè ho riscritto l'evento form_closing per far nascondere il form ma per lasciarlo attivo
ho sovrascritto nel form il metodo WndProc come segue.
ho notato però che parallelamente al thread questo metodo è sempre in ascolto, non vorrei che anche questo crei problemi, dato che questa è una delle correzioni apportate oggi.codice:protected override void WndProc(ref Message m) { const int WM_QUERYENDSESSION = 17; try { switch (m.Msg) { case WM_QUERYENDSESSION: this.to_kill = true; this.Close(); break; default: break; } base.WndProc(ref m); } catch (Exception exc) { lib.alert(exc.Message); } }

Rispondi quotando