private Task <FileOperationContext> TryBrokenFileWork(IDataStore file, IProgressContext progress) { FileOperationsController operationsController = new FileOperationsController(progress); operationsController.QueryDecryptionPassphrase = HandleQueryDecryptionPassphraseEventAsync; operationsController.QuerySaveFileAs += (object sender, FileOperationEventArgs e) => { FileSelectionEventArgs fileSelectionArgs = new FileSelectionEventArgs(new string[] { e.SaveFileFullName }) { FileSelectionType = FileSelectionType.SaveAsDecrypted, }; OnSelectingFiles(fileSelectionArgs); if (fileSelectionArgs.Cancel) { e.Cancel = true; return; } e.SaveFileFullName = fileSelectionArgs.SelectedFiles[0]; }; operationsController.KnownKeyAdded = new AsyncDelegateAction <FileOperationEventArgs>(async(FileOperationEventArgs e) => { await _knownIdentities.AddAsync(e.LogOnIdentity); }); operationsController.Completed += async(object sender, FileOperationEventArgs e) => { if (e.Status.ErrorStatus == ErrorStatus.Success) { await New <ActiveFileAction>().RemoveRecentFiles(new IDataStore[] { New <IDataStore>(e.OpenFileFullName) }, progress); } }; return(operationsController.TryDecryptBrokenFileAsync(file)); }