/// <summary>Асинхронное обновление спсика действий</summary> public static void ReloadActionsAsync(DateTime?dateStart, DateTime?dateEnd) { var a = new ReloadActionArgs { DateEnd = dateEnd, DateStart = dateStart }; if (workerReloadActions.IsBusy) { rActionCache = a; isNeedReloadActions = true; return; } isNeedReloadActions = false; workerReloadActions.RunWorkerAsync(a); }
// загрузка действий static void workerReloadActions_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { var result = e.Result as List <MFPlannerAction>; if (result != null) { lock (actions) { actions.Clear(); actions.AddRange(result); } } DoActionsChanged(); // Если требуется дочитывание if (isNeedReloadActions && rActionCache != null) { ReloadActionsAsync(rActionCache.DateStart, rActionCache.DateEnd); isNeedReloadActions = false; rActionCache = null; } }