Lambdas
Lo sapevo che prima o poi sarei diventato addicted:
public delegate void AsyncVoidMethodHelper();
static void RunAsync(int timeout, AsyncVoidMethodHelper method)
{IAsyncResult result = method.BeginInvoke(null, null);
result.AsyncWaitHandle.WaitOne(timeout);
}
static void Main(string[] args)
{string result = String.Empty;
RunAsync(50, delegate { Thread.Sleep(10);Console.WriteLine("you should see this");
result = "a";});
RunAsync(50, delegate { Thread.Sleep(100);Console.WriteLine("you should _NOT_ see this");
result = "b";});
Console.WriteLine("result should be 'a'. => '{0}'", result);
}
Con solo 2 righe di codice si può eseguire qualsiasi blocco in maniera asincrona e con un timeout predefinito. Ma la fantasia può essere lasciata libera di correre come un cavallo. Fichissima la possibilità di giocare con lo scope delle variabili (assegnazione di result). Stilisticamente perfetto: sintetico per chi lo scrive, doloroso per chi lo deve mantenere.
-quack
Potrebbero interessarti anche:
- Lunedì quiz 4–soluzione
- L’Heisenbug perfetto
- Overengineering
- Tor exit node lookup in ASP.Net
- Metodi dinamici di delegazione
Commenti (52):
[
Pagina 1 di 2
- più vecchi
]
[
Pagina 1 di 2
- più vecchi
]


Facebook,
Wikio,
Segnalo.

martedì 3 febbraio 2009 alle 4:26 PM -
scusa paperino, ho inserito il tag a mano sbagliando!
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 5:07 PM -
@ nonno
Vacci piano con le offese, che le denunce fanno presto a volare. Non sto scherzando. Ti prendi un po troppe libertà ragazzo mio..
Torniamo in topic vah, figurati te se devo stare a perdere tempo con un incompetente (e ignorante) come te. Hai studiato al CEPU con Del Piero? Mavalà..
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 5:10 PM -
@ nonno
Calcolare la diffusione di una piattaforma basandosi sulle unità vendute rispetto al totale è pura follia. Così facendo non tieni conto dell'errore causato da tutte quelle unità che non finiscono nel mercato "Home/Workstation" e quindi confronti le banane con le pere, senza contare che non tieni nemmeno conto della stragrande quantità di PC dismessi in ambito lavorativo, che però fanno sempre "numero" sul totale..
Ripeto: ignorante!
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 5:43 PM -
Enrico C.
Che vieni qui a trolleggiare è un dato di fatto, anche in questo caso entri a gamba tesa senza alcuna inerenza al thread e posti le tue castronerie quotidiane.
Il Nonno in modo simpatico cerca di sdamatizzare le tue imbarazzanti affermazioni e tu ancora insisti ?
PS. Tu calcoli i PC dismessi ? E perchè non calcoli i MAC dismessi?
----
Cmq. nel IT una cosa è certa e la sto testando di persona,
una stragrande maggioranza delle aziende sta switchando ai netbook con XP ( e creetemi che in poco tempo ne ho visto davvero tanti ma tanti) e parlo di multinazionali.
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 5:48 PM -
In Net Applications Veritas!
@ dovella
Tu non puoi dare del troll proprio a nessuno
Ragazzi i dati sono quelli, e sono basati sui browser quindi CICCIA ai vostri calcoli inutili che non tengono conto di migliaia di fattori.
Se fosse cosi facile calcolare la diffusione dei sistemi operativi in base ad un semplice rapporto con le unità vendute lo farebbero tutti no? Invece guarda caso non viene preso in considerazione da nessuno (serio) questo rapporto, deve arrivare il nonno a insegnarci che si fa così e che Net Applications sbaglia..pfui
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 5:51 PM -
EnricoC. sei patetico. Attendo la denuncia!
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 5:58 PM -
@ il nonno
Poverino, non ne vale la pena. Ti compatisco
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:02 PM -
No, si uomo (figuriamoci), denunciami!
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:07 PM -
Ti ricordo che al momento attuale anche i commenti di un blog possono essere prove processuali, soprattutto le offese personali quindi c'è poco da fare gli spiritosi..
Ma personalmente non mi frega nulla di quello che pensi, quindi ti ignoro risparmiando tempo e denaro.
E smettila con questa guerruccia da bimbiminkia fra Win e Mac. Io ti porto delle statistiche ritenute valide, accettale e basta..
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:08 PM -
Raga, datevi una calmata. I dati di Net App sono indicativi della diffusione dei mac, e se non sbaglio si riferiscono agli USA. Quindi non dicono molto delle vendite di personal computer e del resto del mondo. Al massimo dicono che il 10% degli utenti della rete negli in America usa un Mac. Ha un significato su cui non mi pare ci sia molto da fare polemica.
Idem, dire "gli utenti Apple" è la stessa cosa che dire "gli utenti PC", "I frequentatori di questo forum", "gli italiani"... definizioni troppo generiche a cui si possono collegare solo pregiudizi.
Si parlava di C#... giusto?
Devo ammettere però col papero che non ho capito dove sarebbe il problema... cioè, il controllo ritorna senza uccidere il thread? Quindi si dovrebbe terminare esplicitamente il thread?
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:11 PM -
Una domanda su F#: c'è qualche relazione con Scala della JVM, quindi con Erlang?
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:16 PM -
Sto guardando... credo siano cose differenti.
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:16 PM -
@ FDG
Si è riferito al Nord America, quindi non ha nemmeno senso confrontarlo con le unità vendute su scala mondiale (come faceva qualcuno[*].
Boh non so, a me pare semplice da capire. E' una statistica..
Ma tornando in topic (non segnalerò più statistiche, altrimenti qualcuno[**] potrebbe prendersela troppo). Interessa anche a me l'obiezione posta da FDG..
[*] e [**]: la stessa persona, qualcuno che se la prende troppo per 2 statistiche in croce e offende (a torto).
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:17 PM -
e adesso CUCCIA
Windows 7 una beta che mette tutti a tappeto
blogs.msdn.com/.../...-23-of-the-market-share.aspx
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:27 PM -
@ dovella
Quindi quando si tratta di Windows 7 le statistiche sono affidabili mentre quando si tratta di OS X non lo sono più?
Fatemi capire..
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:33 PM -
e l ho postato apposta non l hai capito?
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:36 PM -
L'ironia non era per niente chiara. (e comunque Win7 in USA potrebbe essere benissimo a (circa) il 0,23%.
Sembrava una delle tue solite sparate. "$qualcosa mette tutti a tappeto"
Ognuno creda alle statistiche che gli pare. Indubbiamente lo share del Mac è cresciuto, è un dato interessante significa (fra le altre cose) che c'è stato qualche problemino dall'altra parte. Ma Vista va a gonfie vele, non ditelo al nonno altrimenti si incazza!
Comunque torniamo in topic altrimenti il Papero ci fucila.
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 6:44 PM -
Si è cresciuto con ipod Touch ed Iphone,
risultati che probabilmente caleranno drasticamente per fine 2009.
ti ricordo Imac -40%
solo i macbook vendicchiano (avano)
Permalink - Rispondi al commento
martedì 3 febbraio 2009 alle 8:03 PM -
Sinceramente avreste rotto il ***** tutti e tre. Ma è possibile che qua l'unico che riesca a non fare polemica senza quantomeno intavolare una discussione sia Paperino? Fossi in lui bloccherei i vostri commenti.
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 12:41 AM -
FDG:
Infatti l'esempio è imperfetto anche se nel caso di applicazioni WinForm/Console alcuni thread possono essere completamente abbandonati. L'esempio è illustrativo di come si possano scrivere blocchi di codice inline da eseguire in maniera asincrona senza dover rimbambire con la dichiarazione di metodi "artificiali". Non so se è chiaro
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 8:07 AM -
Concordo con Daniele B.
@EnricoC., che bisogno c'era di tirare fuori le statistiche di Net Applications? Fossi Paperino avrei bloccato il tuo commento, chiaramente OT, e che ha scatenato le solite e prevedibili reazioni.
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 9:18 AM -
I due punti non ci stanno. Se è doloroso per chi lo deve manutenere (e mi sembra lo sia), è masochisticamente perfetto!
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 10:29 AM -
Nel caso vi sia sfuggito, la cosa che piu' e' insopportabile nell'atteggiamento di EnricoC. non e' la sua propaganda pro Apple stile testimone di Geova, ma la sua infantile vena polemica su qualunque argomento.
Lasciamo perdere la polemica su Net Applications, andate a rileggervi quello che ha scritto su F# di cui parla, dopo aver fatto due ricerche in croce su google e wikipedia, con la presunzione e l'arroganza di sapere come stiano le cose.
Il mio riferimento a F# e' stato fatto perche' se si parla di programmazione asincrona (e/o di parallellismo) allora F# ha un paradigma davvero elegante, molto piu' "funzionale" (battuta da geek!) di C#
Comunque consiglio a chi interessato della materia di guardarsi le presentazioni fatte al PDC da Hejlsberg (TL16) e da Luca Bolognese (TL11)
sessions.microsoftpdc.com/public/timeline.aspx
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 11:18 AM -
Faccio notare (rileggete l'ordine dei commenti) che io ho semplicemente segnalato le statistiche di Febbraio (messe fra tag OT tra l'altro). Poi si stava continuando in topic discutendo delle velocità di generazione della pagina.
Il nonno poi è intervenuto e si è sentito bruciare la coda perchè ho buttato li una piccola battuta sulla sua segnalazione di F#. E gli ho pure fatto notare che "forse" era vero che F# è uscito/sta uscendo dalla Microsoft Research. Ma lui niente..
Tutto qui, nessuna polemica particolare non fosse per le offese personali che mi ha rivolto. Io al contrario mi ritengo una persona abbastanza educata, non ho offeso nessuno e ho chiesto scusa quando qualcuno si è sentito offeso.
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 11:37 AM -
Ma il nonno è cresciuto all'epoca del pirata barbanera e quindi si può permettere di essere maleducato.
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 9:44 PM -
Ancora a insistere che F# non e' gia' stato rilasciato come CTP dal team di prodotto... ma hai pantano al posto dei neuroni?
Permalink - Rispondi al commento
mercoledì 4 febbraio 2009 alle 9:51 PM -
@ il nonno
Ah si. E dimmi tuttologo, lo posso usare su Visual Studio come linguaggio supportato al 100%?
Intendo, supponiamo che io stia per acquistare oggi stesso Visual Studio Cazzuta Edition. E' supportato nativamente come linguaggio?
Permalink - Rispondi al commento
giovedì 5 febbraio 2009 alle 2:10 AM -
Oggi le comiche... ho scritto che F# e' stato rilasciato come CTP e che a breve (questione di qualche mese) uscira' la versione RTM e per di piu' sara' open source. Ma e' cosi' difficile da capire?
Bastava che tu seguissi il primo link che avevo postato e saresti arrivato a questo:
www.microsoft.com/.../details.aspx
Per farlo girare hai bisogno di VS Standard (o superiore) o il gratuito Visual Studio Shell, mentre non lo puoi usare con le versioni express.
Una volta installato apri il tuo bel VS e crei un F# project, oppure ti scarichi gli esempi da qui:
code.msdn.microsoft.com/.../ProjectReleases.aspx
e li compili e li lanci dall'IDE di VS.
Ti ho caricato pure una schermata del VS Shell... vediamo se ti basta o devo accendere un cero a padre Pio...
img18.imageshack.us/my.php?image=fsharpba4.png
Ti avessi sotto mano ti avrei gia' strozzato!!!
Permalink - Rispondi al commento
giovedì 5 febbraio 2009 alle 11:23 AM -
@ il nonno
Ti stai concentrando sul fatto che si possa farlo girare su VS. Il dibattito era sulla questione che fosse o meno uscito dalla Microsoft Research. Ed è uscito dalla Microsoft Research no?
Immaginavo che si potesse scaricare visto che è stato rilasciato come CTP (:D) non per niente nel mio commento provocatorio sopra ti ho scritto "supponiamo che io stia per acquistare oggi stesso Visual Studio Cazzuta Edition. E' supportato nativamente come linguaggio?"
Comunque strano tu abbia così difficoltà a dire che è uscito dalla MS Research, visto che lodi sempre MS dovresti essere contento..
Ok dai, finita qui comunque lo proverò visto che ci sono gli esempi sempre molto utili..
Permalink - Rispondi al commento
giovedì 5 febbraio 2009 alle 12:29 PM -
No, la questione non era se originariamente fosse un progetto di MS Research (cosa che non e' mai stata in discussione anche perche' e' del tutto irrilevante) la questione era se "E poi è ancora a livello di "research" no?" o se fosse gia' in mano al team di prodotto.
Se non sai neppure quello che hai affermato e' un problema tuo non mio.
Oltre al fatto che hai messo in dubbio che sia supportato al 100% da Visual Studio, mentre come di ho fatto vedere e' perfettamente integrato in Visual Sudio cazzuta edition, essendo appunto rilasciato in CTP dal team di Visual Studio e non da MS Research.
Quindi come tuo solito hai fatto polemica sul nulla. Bravo!!!
P.S. L'unico motivo per cui ti ho risposto e' che magari c'e' qualcuno a cui effettivamente interessa F# e mi da' fastidio che ci sia qualcuno come te che sparge FUD a riguardo.
Permalink - Rispondi al commento