1.508 messaggi dal 27 dicembre 2005
Già provato con questo ma non va :

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
1.508 messaggi dal 27 dicembre 2005
Riprendo il post per levarmi un dubbio.

Dato il seguente codice :

Async Function OpenSite()
Dim client As New WebClient()

Dim html As String = Await client.DownloadStringTaskAsync(New Uri("http://www.aspitalia.com"))
Me.content.Text = html
End Function

Il nuovo thread parte subito quando si chiama la routine OpenSite oppure quando si giunge al costrutto await ?
Async e await non creano ne eseguono codice asincrono. Lo aspettano. L'implementazione asincrona è tutta demandata a DownloadStringTaskAsync che al suo interno probabilmente esegue qualcosa in sincrono (quindi che blocca la funzione OpenSite ma per pochissimo tempo) e poi affida ad un thread IO l'attesa dello stack di rete

Ciao

Il mio blog
Homepage
1.508 messaggi dal 27 dicembre 2005
Si ma quello che volevo capire è non esegue un thread separato indipendente , cosi come possiamo fare con le classi TPL.
1.508 messaggi dal 27 dicembre 2005
Ricciolo ha scritto:
Async e await non creano ne eseguono codice asincrono. Lo aspettano. L'implementazione asincrona è tutta demandata a DownloadStringTaskAsync che al suo interno probabilmente esegue qualcosa in sincrono (quindi che blocca la funzione OpenSite ma per pochissimo tempo) e poi affida ad un thread IO l'attesa dello stack di rete


Quindi in realtà per avere una reale operazione asincrona bisogna levare await o usare le TPL ?
C'è un po' di confusione
Le TPL sono una libreria che basandosi sul Task permettono parallelizzare, concatenare operazioni ecc. Ma il Task rappresenta solo un'operazione. Asincrona o meno è solo un concetto relativo al chiamante. Se io chiamo un metodo che mi restituisce un Task, si presume che l'operazione che rappresenta sia eseguita da un altro thread e probabilmente ancora in corso.
Async e await ci semplificano semplicemente l'attesa e la lettura di un risultato di un Task, ma la TPL rimane. Essa non fa altro, in base al task scheduler, che affidare l'esecuzione di codice ad un altro thread (in genere del thread pool). Ma non siamo obbligati a passare dalla TPL, perché è solo uno dei tanti strumenti. Possiamo creare manualmente un Task o sfruttare i thread I/O, cioè di fatto effettuare una chiamate sullo stack di rete o su disco, passando la palla a quest'ultimi. Indipendentemente da come avviene realmente l'operazione asincrona, dall'esterno tutto è rappresentato dal Task. Se voglio aspettare, chiamo await.

Ciao

Il mio blog
Homepage
1.508 messaggi dal 27 dicembre 2005
Ricciolo ha scritto:
C'è un po' di confusione
Le TPL sono una libreria che basandosi sul Task permettono parallelizzare, concatenare operazioni ecc. Ma il Task rappresenta solo un'operazione. Asincrona o meno è solo un concetto relativo al chiamante. Se io chiamo un metodo che mi restituisce un Task, si presume che l'operazione che rappresenta sia eseguita da un altro thread e probabilmente ancora in corso.
Async e await ci semplificano semplicemente l'attesa e la lettura di un risultato di un Task, ma la TPL rimane. Essa non fa altro, in base al task scheduler, che affidare l'esecuzione di codice ad un altro thread (in genere del thread pool). Ma non siamo obbligati a passare dalla TPL, perché è solo uno dei tanti strumenti. Possiamo creare manualmente un Task o sfruttare i thread I/O, cioè di fatto effettuare una chiamate sullo stack di rete o su disco, passando la palla a quest'ultimi. Indipendentemente da come avviene realmente l'operazione asincrona, dall'esterno tutto è rappresentato dal Task. Se voglio aspettare, chiamo await.


Grazie per la risposta è l'uso di await che non capivo nel senso...
Se devo effettuare un operazione asincrona perchè devo usare await che mi blocca il thread chiamante per aspettare la risposta del metodo ?

Quindi levando await io posso andare avanti con la mia routine e solo quando ho bisogno , controllare le il thread parallelo che abbia finito o meno il suo compito.

Sbaglio di nuovo nel pensarla cosi ?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.