2010-06-02 16 views

risposta

12

Per C# 5.0 (con .NET 4.5), la denominazione convenzione è XXXAsync per i metodi di restituzione dell'attività.

Se esiste già un metodo con questa denominazione (ad esempio, sul WebClient è già presente un metodo DownloadDataAsync che implementa il modello EAP), il metodo di ritorno asincrono dell'attività deve essere denominato XXXTaskAsync.

+0

Questo è il collegamento alla documentazione ufficiale di questa convenzione di denominazione: http://msdn.microsoft.com/en-us/library/hh873175.aspx. –

+0

Nota a margine: accertarsi che se si utilizza tale convenzione di denominazione, si rispettino anche gli altri principi descritti nel link precedente. Per esempio. "Il lavoro sincrono dovrebbe essere ridotto al minimo" potrebbe non essere necessariamente ovvio quando il tuo metodo Async restituisce l'attività da un altro metodo chiamato a metà della funzione. –

+0

'BeginXXX' è accigliato? Personalmente preferisco quest'ultimo su 'XXXAsync'. –

-2

Si può prendere in considerazione di fornire una proprietà invece di un GetXXX -Metodo, che è più solito in C#. È quindi possibile scrivere

Task<Data> DataTask { get; set; } //auto-implemented 
+1

Penso che questo sia un po 'ortogonale alla versione Task - GetData() essendo un metodo invece di una proprietà sarebbe la scelta originale, e dato che è abbastanza pesante da creare una versione asincrona, suona come se fosse la scelta giusta:) La versione * Task essendo anche un metodo ha certamente senso e corrisponde allo schema eseguito nella libreria ParallelExtensionsExtras (anche se si potrebbe obiettare che la scelta non era presente poiché non c'è supporto per le proprietà dell'estensione :) altri che attraversano questo: http://msdn.microsoft.com/en-us/library/ms229054.aspx –

+0

Grande articolo ... grazie – Simon

2

Mi consiglia di utilizzare i modelli nella libreria ParallelExtensionsExtras dal momento che è fatto dalla stessa squadra che ha fatto la TPL, in primo luogo :)

http://blogs.msdn.com/b/pfxteam/archive/2010/05/04/10007557.aspx

loro modello sembra essere uguale al tuo: [SyncAction] Task per il metodo che esegue SyncAction async tramite un'attività (che viene restituita) - DownloadDataTask, SendTask, ecc.

+0

Accettato, non per essere d'accordo con me, ma per fornire il riferimento. Grazie! – Karg

+1

Devo ammettere che la denominazione in realtà mi sembra un po 'strana in termini di obiettivo che i nomi dei metodi dovrebbero leggere come un'azione - BeginFoo, EndFoo sono abbastanza chiari (come nomi), e FooAsync è anche IMHO decente come sembra asincrono chiaramente essere un avverbio. Tuttavia, FooTask è in realtà piuttosto strano per me nel fatto che il verbo "pippo" ha un nome appena appiccicato alla fine. IMHO è quindi confuso, come, ad esempio "SendTask" come nome di un metodo mi fa capire che è qualcosa che sta per inviare un compito. Non sono sicuro che "FooAsTask" o "FooAsyncAsTask" siano effettivamente migliori, quindi la loro va bene per me. :) –

Problemi correlati