Does that mean that when SetMetadata returns the blobs data has already been updated and saved?
Yes
And BeginSetMetadata is used maybe when you think the operation will take some time?
Yes, but I would rather say it's quite driven by your application design and requirement. Anyway, to understand the completion status of BeginSetMetadata async call you may make use of while IsCompleted property of IAsyncResult returned by it. E.g.
while (!aResult.IsCompleted)
{
// Perform other operations
}
Alternately, you can make use of callback delegate which is passed as 2nd argument to BeginSetMetadata method. It will receive notification when the asynchronous operation completes.
HTH
Sameer
If this answers your question, please Mark it as Answer. If this post is helpful, please vote as helpful.