Example #1
0
        private async Task RunJobAsync(FileWritingJob <T1> job)
        {
            var stream = await GetStreamAsync(job.Outfile);

            if (stream != null)
            {
                await WriteToFile(stream, job.Data);
                await OnWriteCompletedAsync(job);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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;
                }
            }
        }
Example #4
0
        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();
        }