/// <summary> /// Updates all of the components of the working set asynchronously. This launches three tasks. Each task depends on its predecessor: /// <list type="number"> /// <item><description>Update the <see cref="SrcMLProject.SourceArchive"/> and the <see cref="SrcMLProject.NonSourceArchive"/> objects based on <see cref="SrcMLProject.Monitor"/></description></item> /// <item><description>Updates the <see cref="Data"/> based on the <see cref="SrcMLProject.SourceArchive"/></description></item> /// <item><description>Updates the <see cref="Data"/> based on the <see cref="SrcMLProject.SourceArchive"/></description></item> /// </list> /// </summary> /// <returns>The 3rd task</returns> public override Task UpdateAsync() { return(Task.Factory.StartNew(() => base.UpdateAsync().Wait()) .ContinueWith((t) => SourceArchiveMonitor.UpdateArchivesAsync().Wait(), TaskContinuationOptions.OnlyOnRanToCompletion) .ContinueWith((t) => WorkingSet.InitializeAsync().Wait(), TaskContinuationOptions.OnlyOnRanToCompletion)); }