Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Blocco risorse per elaborazione dati
martedì 26 aprile 2016 - 16.20
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 4.0
|
Visual Studio 2010
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
mar 26 apr 2016 - 16:20
Salve a tutti,
sto lavorando ad un progetto in contesto WebForm e volevo sapere se qualcuno sa darmi indicazioni su come "bloccare e rilevare l'elaborazione di un metodo", cerco di spiegarmi meglio.
Semplificando al massimo ho un metodo che esegue la cache dei dati prelevandoli dal database, supponendo che questo metodo impiega diversi minuti ad elaborare la richiesta, dovrei fare in modo di far partire l'elaborazione alla prima chiamata e alle successive chiamate rilevare tale elaborazione fino a che non è stata compiuta.
Faccio un esempio dove due utenti chiamano lo stesso metodo da due browser differenti:
1- utente01 chiama il metodo GetData()
2- il metodo GetData() inizia con l'elaborazione bloccando la risorsa
3- utente01 chiude il browser
4- utente02 chiama il metodo GetData() e viene rilevato che è in fase di elaborazione
Il primo problema da affrontare è come evitare di far interrompere il processo che sta elaborando i dati alla chiusura del browser, questo lo risolvo utilizzando pagine con metodi Async, se ci sono altre modalità accetto suggerimenti.
Successivamente dovrei fare in modo di marcare in qualche modo il metodo che è in fase di elaborazione fino al suo completamento, in modo da poter rilevare tale elaborazione e inviare all'utente l'avviso di attesa, quali strumenti posso utilizzare?
Grazie
Andrea Restucci - Web Developer
vankraster
Profilo
| Newbie
49
messaggi | Data Invio:
lun 2 mag 2016 - 14:05
Dovresti usare una variabile a livello di Applicazione dove memorizzare i dati quindi riuscirai a usarla indifferentemente dalla sessione...
sanghino
Profilo
| Junior Member
73
messaggi | Data Invio:
ven 3 giu 2016 - 13:04
Ciao,
potresti anche prevedere l'utilizzo di una tabella che tracci le esecuzioni del metodo prevedendo una colonna che indichi l'inizio esecuzione, una il termine e magari l'esito. Ad esempio scrivi un record alla prima richiesta con il timestamp di partenza, il secondo utente cerca di eseguire il metodo ma viene riscontrata sulla tabella l'esecuzione ancora pending e quindi blocca. Al termine della prima esecuzione viene scritto il timestamp di fine esecuzione. Se adesso altro utente volesse eseguire il metodo la verifica che implementeresti restituirebbe che non ci sono esecuzioni pending e quindi proseguirebbe.
Che te ne pare ? Con questo metodo devi solo avere l'accortezza di non lasciare esecuzioni pending anche in caso di errore gestendo la chiusura dell'esecuzione nel giusto modo.
Ciao
Sanghino
--------------------------
www.extrageek.com
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
lun 14 nov 2016 - 11:12
vankraster i dati vengono già salvati in cache
Andrea Restucci - Web Developer
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
lun 14 nov 2016 - 11:14
grazie ho risolto con
http://hangfire.io/
questo modulo gestisce tutto lui, ovviamente ho dovuto integrare del codice dove verifico se è in corso l'esecuzione del processo in background, la cosa molto utile è che questi processi non sono legati a nessuna sessione quindi anche se chiudo il browser il processo continua ad essere processato in backgroud
Andrea Restucci - Web Developer
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !