I've done a bit of reading, and think I have grasped the basics of the await and async keywords, with regards to System.Threading.Task.
I'm not sure if I'm right over a small issue, however, and am looking for verification or for someone to correct me.
I'm implementing an async method, with this signature:
public Task ProcessUploadedFile(FileInfo info, string contentType);
Obviously, if I want to await anything inside the method, I need to add the async keyword into the signature,
My question is this: If the last thing that my method does is call another async method, or return a task, is there any point in awaiting it?
Eg.
1:
public async Task ProcessUploadedFile(FileInfo info, string contentType)
{
foreach (var something in someCollection)
DoSomething();
DoSomethingElse();
await DoMethodAsync();
}
2:
public Task ProcessUploadedFile(FileInfo info, string contentType)
{
foreach (var something in someCollection)
DoSomething();
DoSomethingElse();
return DoMethodAsync();
}
I initially wrote the former, but can no longer see the point in adding the await. If I were to write the latter, I accomplish the same thing, and the caller of both methods can still use the await keyword if they choose, no?
Is there any difference in the above? Which is "better"?