コード例 #1
0
        private static async Task SaveDataRoamingAsync(BookInfo[] items)
        {
            if (!(bool)SettingStorage.GetValue("SyncBookmarks"))
            {
                return;
            }

            await fileRoamingSemaphore.WaitAsync();

            try
            {
                var f = await DataFolderRoaming.CreateFileAsync(fileName, Windows.Storage.CreationCollisionOption.ReplaceExisting);

                using (var s = (await f.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite)).AsStream())
                {
                    var serializer = new System.Xml.Serialization.XmlSerializer(typeof(BookInfo[]));
                    serializer.Serialize(s, items);
                }
            }
            catch
            {
                // ignored
            }
            finally
            {
                fileRoamingSemaphore.Release();
            }
        }
コード例 #2
0
        internal static async Task <BookInfo[]> LoadAsync()
        {
            var infoRoaming = (bool)SettingStorage.GetValue("SyncBookmarks") ? (await LoadAsyncOne(await GetDataFileRoamingAsync(), fileRoamingSemaphore) ?? new BookInfo[0]).ToList() : new List <BookInfo>();
            var infoLocal   = (await LoadAsyncOne(await GetDataFileLocalAsync(), fileLocalSemaphore) ?? new BookInfo[0]).ToList();

            foreach (var item in infoLocal)
            {
                var rindex = infoRoaming.FindIndex((s) => s.ID == item.ID);
                if (rindex == -1)
                {
                    infoRoaming.Add(item);
                }
                else if (infoRoaming[rindex].ReadTimeLast < item.ReadTimeLast)
                {
                    infoRoaming.RemoveAt(rindex);
                    infoRoaming.Add(item);
                }
            }
            return(infoRoaming.ToArray());
        }