示例#1
0
		static async Task WriteFileAsync(string fileName, IReadOnlyList<ImageReference> images, FileHeader cic, BookmarkCollection bookmarks, IProgress<int> progress)
		{
			using (FileStream writeStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
			{
				cic.Save(writeStream);
				bookmarks.Save(writeStream);
				using (BinaryWriter writer = new BinaryWriter(writeStream, System.Text.Encoding.Unicode, true))
				{
					writer.Write(images.Count); // 画像数
					for (int i = 0; i < images.Count; i++)
					{
						await images[i].SaveAsync(writer).ConfigureAwait(false);
						progress?.Report((i + 1) * 100 / images.Count);
					}
				}
			}
		}
示例#2
0
		public async Task SaveAsync(string fileName, IProgress<int> progress)
		{
			using (EnterSingleOperation())
			using (EnterUndirtiableSection())
			{
				var inconsistency = CheckInconsistency();
				if (inconsistency != ConsistencyValidatedDataTypes.None)
					throw new InconsistentDataException(Properties.Resources.InconsistentData, inconsistency);
				var header = new FileHeader(Title, Author, DateOfPublication, PageTurningDirection, Thumbnail);
				await WriteFileAsync(fileName, Images.ToArray(), header, Bookmarks, progress).ConfigureAwait(false);
				FileVersion = header.FileVersion;
				IsDirty = false;
			}
		}