public static async Task LoadQuickStartItemsAsync() { if (Interlocked.Exchange(ref LoadQuickStartLockResource, 1) == 0) { try { if (!IsQuickStartLoaded) { IsQuickStartLoaded = true; foreach (KeyValuePair <QuickStartType, QuickStartItem> Item in await SQLite.Current.GetQuickStartItemAsync()) { if (Item.Key == QuickStartType.Application) { QuickStartList.Add(Item.Value); } else { WebLinkList.Add(Item.Value); } } QuickStartList.Add(new QuickStartItem()); WebLinkList.Add(new QuickStartItem()); } } catch (Exception ex) { LogTracer.Log(ex); } finally { _ = Interlocked.Exchange(ref LoadQuickStartLockResource, 0); } } }
public static async Task LoadQuickStartItemsAsync(bool IsRefresh = false) { if (Interlocked.Exchange(ref LoadQuickStartLockResource, 1) == 0) { try { if (!IsQuickStartLoaded || IsRefresh) { IsQuickStartLoaded = true; if (IsRefresh) { QuickStartList.Clear(); WebLinkList.Clear(); } foreach ((string Name, string IconPath, string Protocal, string Type) in SQLite.Current.GetQuickStartItem()) { StorageFile ImageFile = null; try { ImageFile = IconPath.StartsWith("ms-appx") ? await StorageFile.GetFileFromApplicationUriAsync(new Uri(IconPath)) : await StorageFile.GetFileFromPathAsync(Path.Combine(ApplicationData.Current.LocalFolder.Path, IconPath)); BitmapImage Bitmap = new BitmapImage(); using (IRandomAccessStream Stream = await ImageFile.OpenAsync(FileAccessMode.Read)) { await Bitmap.SetSourceAsync(Stream); } if (Enum.Parse <QuickStartType>(Type) == QuickStartType.Application) { QuickStartList.Add(new QuickStartItem(QuickStartType.Application, Bitmap, Protocal, IconPath, Name)); } else { WebLinkList.Add(new QuickStartItem(QuickStartType.WebSite, Bitmap, Protocal, IconPath, Name)); } } catch (Exception ex) { LogTracer.Log(ex, $"Could not load QuickStart item, Name: {Name}"); SQLite.Current.DeleteQuickStartItem(Name, Protocal, IconPath, Type); if (ImageFile != null) { await ImageFile.DeleteAsync(StorageDeleteOption.PermanentDelete); } } } QuickStartList.Add(new QuickStartItem()); WebLinkList.Add(new QuickStartItem()); } } catch (Exception ex) { LogTracer.Log(ex); } finally { _ = Interlocked.Exchange(ref LoadQuickStartLockResource, 0); } } }