Descrive una funzione lambda (anonima). In questo caso è una funzione che accetta un argomento, o, e quindi esegue MyFunction (anche se in questo caso è fondamentalmente il lancio del valore di o). E 'equivalente a:
void Foo(object o) //We know that Foo takes an object and returns void because QueueUserWorkItem expects an instance of type WaitCallback which is a delegate that takes and object and returns void
{
MyFunction();
}
ThreadPool.QueueUserWorkItem(Foo) // or ThreadPool.QueueUserWorkItem(new WaitCallback(Foo));
Il tipo di O è dedotto sulla base di ciò che si aspetta QueueUserWorkItem. QueueUserWorkItem si aspetta tipo WaitCallback quindi in questo caso o dovrebbe essere di tipo oggetto perché WaitCallback è delegato per i metodi con un parametro di tipo oggetto che restituisce void.
Come per lo che significa di questo particolare frammento di codice; in pratica aggiungi una funzione (elemento di lavoro) a una coda che verrà eseguita da uno dei thread nel pool (quando sarà disponibile). Quel particolare frammento di codice descrive solo un modo carino e succinto di passare la funzione senza dover passare attraverso il problema di definire completamente un metodo di classe.
Per inciso, io e altri, tendiamo a leggere => come 'tale che'. Alcune persone lo leggono come "va a".
fonte
2010-06-28 04:59:11
Credo che si intende '() => MyFunction()', questa è una lambda senza un parametro –
@Mystere Man QueueUserWorkItem aspetta un'istanza di WaitCallback che è un delegato per i metodi che prendono e degli oggetti e restituire void . Quindi, anche se strano, la firma è corretta. –