I worked on tying threads to my azure code to put things in line. For this, I used http://www.microsoft.com/download/en/details.aspx?id=19222 as a link.
my code for posting multiple posts is as follows:
public void AddMessagesAsync(IEnumerable<IQueueMessage> messages, string queue = null, TimeSpan? timeToLive = null)
{
if (!String.IsNullOrEmpty(queue))
{
SetCurrent(queue);
}
var tasks = new List<Task>();
Parallel.ForEach(messages, current => {
if (timeToLive.HasValue)
{
var task = Task.Factory.FromAsync(Current.BeginAddMessage, Current.EndAddMessage, Convert(current), timeToLive.Value, tasks);
tasks.Add(task.ContinueWith((t) => AddMessageCompleted(t)));
}
else
{
var task = Task.Factory.FromAsync(Current.BeginAddMessage, Current.EndAddMessage, Convert(current), tasks);
tasks.Add(task.ContinueWith((t) => AddMessageCompleted(t)));
}
});
Task.Factory.ContinueWhenAll(tasks.ToArray(), (t) => AddMessagesCompleted(t));
}
private void AddMessagesCompleted(Task[] tasks)
{
try
{
Task.WaitAll(tasks);
}
catch (AggregateException e)
{
var ex = e;
}
if (AddedMessages != null)
{
AddedMessages(tasks, EventArgs.Empty);
}
}
Now my question is about the task. Wait to continue (which corresponds to the document provided by MS). it seems a little strange to wait for the flows, where do you already know that they are finished? the only reason I can imagine is to clean up the errors and handle them. Did I miss something?
source
share