Как я видел в нескольких примерах , а также, что я могу понять из этого Вопрос SO > Я должен иметь возможность вернуть не-общую задачу из TaskCompletionSource
(i.e., Return Task and not Task<TResult> from the method UploadFilesAsync)
Однако следующий код:
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;
}
Производит следующую синтаксическую ошибку
'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>'?
Я нацелен на .NET 4.5. Я знаю, что он может работать, чтобы вернуть задачу (объекта), но это делает интерфейс API "грязным". Предпочитает ли практика возвращать задачу (объекта) или можно вернуть задачу (не общее, как показано в коде)?