1.509 messaggi dal 27 dicembre 2005
BrightSoul ha scritto:
ciao Paolo,

PaoloMontero ha scritto:

vorrei che l utente 2 fosse servito alla fine dell 'elaborazione del pulsante premuto dall'utente 1


Benissimo, allora puoi usare il SyncLock come stavi già facendo.
Ricordati che un'applicazione web ASP.NET è multi-threaded per default. Il webserver IIS, infatti, può usare vari thread differenti per far fronte alle richieste degli utenti. Quindi, se vuoi leggere/scrivere su variabili Shared devi regolarne l'accesso con il SyncLock.
Come ti dicevo nel post precedente, esistono anche altri sistemi per scrivere su variabili Shared in maniera thread-safe, ma il SyncLock va già bene.

Se questo non risponde al tuo quesito, spiega dettagliatamente cosa inserisci nelle variabili Shared e quale risultato vuoi ottenere.

PaoloMontero ha scritto:

ti ringrazio del tempo che ci hai perso.

Prego :) Non è proprio tempo "perso" se ti ha aiutato a chiarire dei dubbi.

ciao,
Moreno



Cosa consiglieresti tu ?

Dovrei andare a rileggere i libri che mi ricordo che ci sono tante classi per fare questo.
11.886 messaggi dal 09 febbraio 2002
Contributi
E' vero, non esistono molti sistemi.
Prima di sceglierne uno però, forse eviterei di mettere il SyncLock direttamente nella pagina aspx perché regolare l'accesso alla variabile non deve essere una sua responsabilità. Invece, farei una classe singleton che espone dei metodi tipo CambiaImpostazione(string chiave, string nuovoValore) e nasconderei l'implementazione lì dentro. A quel punto sarei libero di scegliere se usare il lock oppure altri sistemi, tipo un ConcurrentDictionary che è una classe thread-safe già di per sé, oppure userei un ReaderWriterLockSlim nel caso in cui dovessi svolgere più operazioni di scrittura in maniera atomica. E' un pelo meglio che usare il SyncLock perché fintanto che più thread vogliono accedere contemporaneamente in sola lettura possono farlo.

In ultimo, se si tratta solo di assegnare un nuovo valore alla variabile, si potrebbe pure usare la classe Interlocked e il suo metodo Exchange.

ciao,
Moreno

Enjoy learning and just keep making
20 messaggi dal 02 febbraio 2013
BrightSoul ha scritto:
ciao Paolo,

PaoloMontero ha scritto:

vorrei che l utente 2 fosse servito alla fine dell 'elaborazione del pulsante premuto dall'utente 1


Benissimo, allora puoi usare il SyncLock come stavi già facendo.
Ricordati che un'applicazione web ASP.NET è multi-threaded per default. Il webserver IIS, infatti, può usare vari thread differenti per far fronte alle richieste degli utenti. Quindi, se vuoi leggere/scrivere su variabili Shared devi regolarne l'accesso con il SyncLock.
Come ti dicevo nel post precedente, esistono anche altri sistemi per scrivere su variabili Shared in maniera thread-safe, ma il SyncLock va già bene.

Se questo non risponde al tuo quesito, spiega dettagliatamente cosa inserisci nelle variabili Shared e quale risultato vuoi ottenere.

PaoloMontero ha scritto:

ti ringrazio del tempo che ci hai perso.

Prego :) Non è proprio tempo "perso" se ti ha aiutato a chiarire dei dubbi.

ciao,
Moreno


Io sto facendo in sito di gioco carte, che funziona in modo molto semplice.
In pratica tramite gli updatepanel impostati su aggiornamento conditinol aggiorno porzioni di schermo che a me interessano.
Mi sono creato una label stringa che confronto con una variabile stringa,se questa variabile è diversa dalla label eseguo aggiornamenti mirati alla porzione di cambio stringa.
Tutto funziona alla perfezione.
Il dubbio mi è nato dal fatto del doppio click , che ho egregiamente grazie a te risolto.
In quanto mi era accorto che se facevo un doppio click rapidissimo , avvenivano le 2 istruzini esempio :

button1.click
synclock blocco
.. if tiro = true
...tiro = false
...numero = numero +5
end synclock

quindi il synclock mi ha tratto in inganno e ho supposto che non funzionasse.
Perche se premuti rapidi eseguiva entrambi, invece di eseguire il primo, poi essendo tiro = false il secondo tiro non doveva essere letto, invece non capitava.
Ma ho risolto eliminando il doppio click , quindi il server ha il tempo di fare l'itera sub

Altra domanda, quante variabili massimo posso memorizzare globali come faccio io in un sito?
io ne sto usando 30, per un tavolo, ma se volessi fare piu tavoli giochi?
a Quanto posso arrivare?

Grazie di tutto!
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

PaoloMontero ha scritto:

io ne sto usando 30, per un tavolo, ma se volessi fare piu tavoli giochi?
a Quanto posso arrivare?

Dovresti inserire in una classe tutte le 30 proprietà. Poi, per ogni tavolo, crei un'istanza di quella classe e le assegni un id univoco che tutti i partecipanti a quel tavolo dovranno fornire insieme ad ogni loro operazione di gioco.

Questa "classe" potrebbe essere anche un workflow del tipo macchina a stati finiti, che ti consentirebbe di modellare meglio le regole di gioco e di non impazzire nel realizzare giochi più complessi.
Qui c'è un articolo che ti mostra come usare il runtime di Workflow foundation con asp.net
http://msdn.microsoft.com/en-us/library/aa349445.aspx

ciao,
Moreno

Enjoy learning and just keep making

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.