async Task asy2FindNewDL(List <Feed> feedsParam = null) { MUProgressPerc += .06; MUProgressState = TaskbarItemProgressState.Normal; var feeds = feedsParam ?? FeedList.Where(r => r.RunTimeNote.StartsWith(__new)).ToList(); //var lst = FeedList.Where(r => r.Name == "CBC Ideas "); //.RunTimeNote.StartsWith(__new)); Max2 = feeds.Sum(r => r.DnLds.Where(d => d.IsStillOnline == true).Count()); try { FC = Brushes.Blue; Appender += $"F2. Checking {feeds.Count}{(feedsParam == null ? " NEW" : " ALL")} feeds for new casts ... "; #if !AwaitNotWorking await Task.Delay(3); foreach (var feed in feeds.ToList()) { try { Debug.WriteLine(feed.Name); var ri = RssHelper.FindNewCasts(feed)?.RssDnldInfos; Debug.WriteLine("~> {0,-32} {1,5} casts found in RSS", feed.Name, ri.Count); await addUPdate_SetIdrFlag(feed, ri); //Val2++; } catch (Exception ex) { ex.Log(); feed.RunTimeNote = ex.Message; FC = Brushes.Violet; } } //WARNING!!! This one does not AWAIT!!! ->lst.ToList().ForEach(async feed => { try { await addUPdate_SetIdrFlag(feed, RssHelper.FindNewCasts(feed).RssDnldInfos); } catch (Exception ex) { ex.Log(); feed.RunTimeNote = ex.Message; FC = Brushes.Violet; } }); Appender += $"done. ({Val2} / {Max2} / {feeds.Sum(r => r.DnLds.Where(d => d.IsStillOnline == true).Count())})"; //saving must be donw only after dnldg finished otherwise there will be omissions from F2Same case: InfoMsg += DbSaveLib.TrySaveReport(_db, "Db-saving new found casts done. \r\n"); //recursive calling itwself: onChgdSelectFeed1(); if (feeds.Count == 1) { reload1(feeds[0]); } else { reloadActiveRecentDnlds(); } FC = Brushes.LightGreen; #else var t = Task.Run(() => FeedList.ToList().ForEach(feed => { try { addUPdate_SetIdrFlag(feed, RssHelper.FindNewCasts(feed).RssDnldInfos); } catch (Exception ex) { ex.Log(); feed.RunTimeNote = ex.Message; FC = Brushes.Violet; } })); await t.ContinueWith(_ => { InfoMsg += DbSaveLib.TrySaveReport(_db, "Db-Saving new casts"); FC = Brushes.LightGreen; }, TaskScheduler.FromCurrentSynchronizationContext()); InfoMsg += "\r\nWaiting ..."; t.Wait(); #endif } catch (Exception ex) { ex.Log(); Appender += "\r\nasy2FindNewDL() failed.\r\n" + ex.ToString(); FC = Brushes.Violet; } MUProgressPerc += .09; MUProgressState = TaskbarItemProgressState.Paused; }