public static void Save() { //dont start saving if already saving if (saveTask == null || saveTask.IsCompleted) { repeatSaveTask = false; saveTask = Task.Run(() => { if (Instance == null) { Instance = new RestoreState(); } Instance.WriteFile(); }).ContinueWith((_) => { if (repeatSaveTask) { RestoreState.Save(); } }); } else { //if something updated, schedule another save repeatSaveTask = true; } }