Chiamata di metodo asincrona

Autore: Lewis Jackson
Data Della Creazione: 8 Maggio 2021
Data Di Aggiornamento: 23 Giugno 2024
Anonim
Why Promises?
Video: Why Promises?

Contenuto

Definizione - Cosa significa Chiamata metodo asincrona?

Una chiamata di metodo asincrona è un metodo utilizzato nella programmazione .NET che ritorna al chiamante immediatamente prima del completamento della sua elaborazione e senza bloccare il thread chiamante.

Quando un'applicazione chiama un metodo asincrono, può contemporaneamente eseguire insieme all'esecuzione del metodo asincrono che esegue la sua attività. Un metodo asincrono viene eseguito in un thread separato dal thread dell'applicazione principale. I risultati dell'elaborazione vengono recuperati tramite un'altra chiamata su un altro thread.

I metodi asincroni aiutano a ottimizzare l'esecuzione delle risorse con conseguente applicazione scalabile. Vengono utilizzati per eseguire attività che richiedono molto tempo come l'apertura di file di grandi dimensioni, la connessione a computer remoti, l'interrogazione di un database, la chiamata a servizi Web e moduli Web ASP.NET.

La chiamata asincrona al metodo può anche essere denominata chiamata asincrona al metodo (AMI).


Un'introduzione a Microsoft Azure e Microsoft Cloud | In questa guida imparerai cos'è il cloud computing e in che modo Microsoft Azure può aiutarti a migrare e gestire la tua azienda dal cloud.

Techopedia spiega la chiamata asincrona al metodo

Il metodo asincrono differisce dal metodo sincrono nel modo in cui ritorna dalla chiamata. Mentre una chiamata di metodo asincrona ritorna immediatamente, consentendo al programma chiamante di eseguire altre operazioni, le chiamate di metodo sincrone attendono il completamento del metodo prima di continuare con il flusso del programma.

Il framework .NET ha un'infrastruttura asincrona integrata in modo che qualsiasi metodo possa essere invocato in modo asincrono senza alterarne il codice.

.NET framework fornisce due modelli di progettazione per implementare il metodo asincrono, ovvero quelli che utilizzano delegati asincroni (oggetti IASyncResult) ed eventi. Il modello di delegati asincroni è più complesso e offre flessibilità, il che lo rende adatto a vari modelli di programmazione complessi. Il modello basato su eventi è semplice e dovrebbe essere utilizzato nella maggior parte dei casi.

Nel modello di delegati asincrono, un oggetto delegato utilizza due metodi: BeginInvoke e EndInvoke. BeginInvoke ha un elenco di parametri, simili alla sua funzione "wrapped", insieme a due parametri opzionali aggiuntivi; restituisce l'oggetto IAsyncResult. EndInvoke restituisce due parametri (tipo out e ref) insieme all'oggetto IAsyncResult. BeginInvoke viene utilizzato per avviare la chiamata asincrona, mentre EndInvoke viene utilizzato per recuperare i risultati della chiamata asincrona.

I modelli asincroni basati su eventi utilizzano una classe che ha uno o più metodi, denominati MethodNameAsync, che hanno versioni sincrone corrispondenti che vengono eseguite sul thread corrente. I pattern basati su eventi possono anche avere un evento MethodNameCompleted e il metodo MethodNameAsyncCancel. Questo modello consente alla classe di comunicare con operazioni asincrone in sospeso utilizzando il modello di eventi delegato.

Di seguito sono riportati alcuni suggerimenti relativi ai metodi asincroni:


  • Per l'elevata concorrenza, i metodi asincroni devono essere evitati
  • È necessario prestare attenzione durante il passaggio dei riferimenti agli oggetti condivisi
  • EndXXX (chiamato alla fine di un'operazione asincrona) deve essere chiamato per ricodificare le eccezioni ed evitare errori
  • Catturando e salvando tutti gli oggetti eccezione in metodo asincrono, può essere riprogrammato durante la chiamata EndXXX
  • I controlli nell'interfaccia utente che avviano operazioni asincrone a esecuzione prolungata devono essere disabilitati se sono necessari solo a tale scopo
  • I metodi asincroni devono essere implementati con una comprensione del multithreading e dove si dimostrano più efficienti rispetto all'utilizzo dei metodi sincroni.