private async Task RunJobAsync(FileWritingJob <T1> job) { var stream = await GetStreamAsync(job.Outfile); if (stream != null) { await WriteToFile(stream, job.Data); await OnWriteCompletedAsync(job); } }
public async Task WriteAsync(StorageFolder folder, string fileName, T1 data) { var secondaryFileName = fileName + Tools.GetResourceString("FileType/secondarySaveFile"); var file = await Tools.CreateFileAsync(folder, secondaryFileName); var newJob = new FileWritingJob <T1>(fileName, secondaryFileName, folder, file, data); await NewJobAsync(newJob); }
private async Task NewJobAsync(FileWritingJob <T1> job) { var stream = await GetStreamAsync(job.Outfile); if (stream != null) { await WriteToFile(stream, job.Data); await OnWriteCompletedAsync(job); } else { lock (NextJobLock) { AnotherJobToProcess = true; NextJob = job; } } }
private async Task OnWriteCompletedAsync(FileWritingJob <T1> job) { // Replace actual file with the backup. var originalFile = await Tools.GetFileAsync(job.Folder, job.FileName); var backupFile = await Tools.GetFileAsync(job.Folder, job.BackupName); if (originalFile == null) { await backupFile.RenameAsync(job.FileName); } else { await backupFile.CopyAndReplaceAsync(originalFile); await backupFile.DeleteAsync(); } // Run next job. await RunNextJobAsync(); }