Operazioni asincrone

Il completamento delle operazioni di database può richiedere molto tempo. Per mantenere reattiva un'interfaccia utente o evitare di bloccare un thread di richiesta, usare metodi di database asincroni anziché attendere in modo sincrono il completamento di un comando.

Installare il pacchetto NuGet Microsoft.Data.SqlClient per il codice client SQL. Per le nuove applicazioni, usare OpenAsync e i metodi ExecuteNonQueryAsync, ExecuteReaderAsync e await con ExecuteXmlReaderAsync. Questi metodi eseguono input/output asincrono (I/O) senza che sia necessario creare un thread in background.

Microsoft. Data.SqlClient supporta anche i modelli di callback, wait-handle e polling descritti in questa sezione. I metodi BeginExecuteNonQuery, BeginExecuteReader e BeginExecuteXmlReader sono associati a EndExecuteNonQuery, EndExecuteReader e EndExecuteXmlReader. Non aggiungere Asynchronous Processing=true al stringa di connessione; Microsoft. Data.SqlClient non supporta tale parola chiave.

Annotazioni

Per il nuovo codice, usare il modello asincrono basato su attività. Gli esempi in questa sezione illustrano il modello supportato Begin/End per le applicazioni che richiedono callback, handle di attesa o polling.

Mantenere attiva ogni connessione e comando fino al completamento dell'operazione. Osservare le eccezioni quando si chiama il metodo corrispondente End o si attende il task. In un'applicazione desktop aggiornare i controlli solo dal thread dell'interfaccia utente.

In questa sezione

Applicazioni Windows che usano callback Fornisce un esempio che illustra come eseguire un comando asincrono in modo sicuro, gestendo correttamente l'interazione con un modulo e il relativo contenuto da un thread separato.

ASP.NET applicazioni che usano handle di attesa Viene fornito un esempio che illustra come eseguire più comandi simultanei da una pagina ASP.NET, usando handle di attesa per gestire l'operazione al completamento di tutti i comandi.

Polling nelle applicazioni console Fornisce un esempio che illustra l'uso del polling per attendere il completamento di un'esecuzione asincrona dei comandi da un'applicazione console. Questa tecnica è valida anche in una libreria di classi o in un'altra applicazione senza un'interfaccia utente.

Vedere anche