private async Task ProcessBackgroundGetPlayURLAsync() { try { var ListVocabulary = DataAccess.GetListVocabularyToGetPlayURL(); ParallelOptions parallelOptions = new ParallelOptions(); parallelOptions.MaxDegreeOfParallelism = Environment.ProcessorCount * 2; // TODO await Task.Run(() => Parallel.ForEach(ListVocabulary, parallelOptions, async _item => { await TranslateService.goGetPlayURLAsync(_item); })); Helper.ShowToast("Crawling: Process Background Get Play URL Finished."); } catch (Exception ex) { Helper.ShowToast("Crawling: Process Background Get Play URL Fail: " + ex.Message); } }