Renvoyer la tâche au lieu de Task & lt; TResult & gt; à partir de TaskCompletionSource

Comme je l'ai vu dans plusieurs des exemples de codeainsi que ce que je peux comprendre à partir de ce DONC, la question je devrais être en mesure de retourner un non-générique Tâche de TaskCompletionSource

(i.e., Return Task and not Task<TResult> from the method UploadFilesAsync) 

Encore le code suivant:

public async Task UploadFilesAsync(string fileAPath, string fileBPath)
{
   var tcs = new TaskCompletionSource<Object>();

   //logic to process files

   try
   {
      await Task.WhenAll(uploadFileAAsync(fileAPath), 
                         uploadFileBAsync(fileBPath));
      tcs.TrySetResult(null);
   }
   catch (Exception e)
   {
      tcs.SetException(e);
   }
   finally
   {
      //logic to clean up files
   }
   return tcs.Task;
}

Produit suivantes erreur de syntaxe

'UploadFilesAsync(string, string)' is an async method that returns 'Task', 
a return keyword must not be followed by an object expression. 
Did you intend to return 'Task<T>'?

Je suis ciblage .NET 4.5. Je sais qu'il peut travailler pour le retour de la Tâche(de l'objet), mais qui fait de l'API se sentir "sale". Est-il recommandé de retourner à la Tâche(de l'objet) ou est-il possible de retourner à la Tâche (non générique, comme indiqué dans le code)?

source d'informationauteur Jonathan Harrison