Ho un servizio WCF che otterrà un oggetto con enormi dati dal database sotto forma di raccolta. Ho un'interfaccia utente che ha i pulsanti per ottenere e annullare.
Pulsante Ottieni: fai richiesta di servizio e continua con la popolazione di dati con i dati restituiti dal servizio.Io avvio come di seguito
Thread _workerThread = new Thread(DoExportTreeLoad);
_workerThread.Start();
Annulla: interrompe il thread precedente. Funziona come di seguito
_workerThread.Abort()
Il mio DoExportTreeLoad () ha la chiamata al servizio sincrono che a sua volta colpisce il database e ottiene i dati.
result = serivce.GetData(criteria);
Problema: quando annullo l'operazione dopo aver richiesto il servizio, il codice DAL è ancora in esecuzione in background (recupero dei dati dal database) dove non dovrebbe accadere.
Non appena annullo l'operazione dall'interfaccia utente, la transazione (per ottenere i dati) dal database deve essere interrotta. Porta a un grande problema di prestazioni.
Per favore aiutatemi in qualsiasi modo a finire l'attività di back-end quando il thread è cancellato. Grazie in anticipo.