public void Reload() { var progress = new ProgressDialog(Activity); progress.SetTitle(Resource.String.please_wait); progress.SetMessage(GetString(Resource.String.loading)); progress.Indeterminate = true; progress.Show(); Task.Factory.StartNew(async() => { var db = ion.database; var jobs = new Dictionary <JobRow, List <SessionRow> >(); // Add the "Default" job that sessions are assigned to jobs.Add(new JobRow() { _id = 0, jobName = GetString(Resource.String.report_session_unassigned), }, new List <SessionRow>()); foreach (var job in await db.QueryForAllAsync <JobRow>()) { jobs[job] = new List <SessionRow>(); } foreach (var job in jobs.Keys) { var sessions = jobs[job]; sessions.AddRange(db.Table <SessionRow>().Where(x => x.frn_JID == job._id).AsEnumerable()); } var records = new List <RecordAdapter.IRecord>(); foreach (var job in jobs.Keys) { records.Add(new ReportJobHeaderRecord(job, jobs[job])); foreach (var session in jobs[job]) { records.Add(await ReportSessionRecord.NewAsync(ion, session)); } } return(records); }).ContinueWith((arg) => { progress.Dismiss(); if (arg.Result.IsFaulted) { Error(GetString(Resource.String.report_error_unknown), arg.Exception); } else { adapter.Set(arg.Result.Result); } InvalidateDelete(); SyncCheckedSessions(); }, TaskScheduler.FromCurrentSynchronizationContext()); }
private void Reload() { var progress = new ProgressDialog(Activity); progress.SetTitle(Resource.String.please_wait); progress.SetMessage(GetString(Resource.String.loading)); progress.Indeterminate = true; progress.Show(); LoadAllSessionsAsync().ContinueWith((arg) => { if (arg.IsFaulted) { Error(GetString(Resource.String.report_error_failed_to_load_sessions), arg.Exception); } else { adapter.Set(arg.Result); } progress.Dismiss(); InvalidateDelete(); SyncCheckedSessions(); }, TaskScheduler.FromCurrentSynchronizationContext()); }