void source_GetEntriesCompleted(object sender, GetEntriesCompletedEventArgs args) { #if DEBUG DebugUtility.DebugOutputMemoryUsage("Beginning Entries Completed Handler"); #endif source = null; System.GC.Collect(); System.GC.WaitForPendingFinalizers(); System.GC.Collect(); service = new PhoneTileUpdateService(); var tileContacts = new List <BirthdayContact>(); if (args.Contacts.Any()) { tileContacts = args.Contacts.OrderBy(it => it.DaysUntil).Take(3).ToList(); } //var count = args.Contacts.Where(it => it.DaysUntil == 0).Count(); var count = 0; args.Contacts = null; System.GC.Collect(); System.GC.WaitForPendingFinalizers(); System.GC.Collect(); service.UpdateTileSynchronous(tileContacts, count, UpdateTileCompleted); }
/// <summary> /// Agent that runs a scheduled task /// </summary> /// <param name="task"> /// The invoked task /// </param> /// <remarks> /// This method is called when a periodic or resource intensive task is invoked /// </remarks> protected override void OnInvoke(ScheduledTask task) { #if DEBUG AgentExitReason reason = task.LastExitReason; DebugUtility.SaveDiagnostics(new Diagnostics() { DeviceUniqueId = DebugUtility.GetDeviceUniqueID(), AgentExitReason = reason.ToString() }); Debug.WriteLine("Agent Last Exited for Reason: " + reason.ToString()); DebugUtility.DebugStartStopwatch(); DebugUtility.DebugOutputMemoryUsage("Scheduled Task Initial Memory Snapshot"); #endif source = new PhoneBirthdaySource(); source.GetEntriesCompleted += source_GetEntriesCompleted; source.BeginGetAllEntries(); }
void UpdateTileCompleted() { service = null; System.GC.Collect(); System.GC.WaitForPendingFinalizers(); System.GC.Collect(); #if DEBUG DebugUtility.DebugOutputElapsedTime("Scheduled Task Final Time Snapshot:"); DebugUtility.DebugOutputMemoryUsage("Scheduled Task Final Memory Snapshot"); #endif #if (DEBUG_AGENT) // ScheduledActionService.LaunchForTest("StirlingBirthdayTileUpdateTask", TimeSpan.FromSeconds(60)); #endif NotifyComplete(); }
void Current_Exit(object sender, System.EventArgs e) { DebugUtility.DebugOutputMemoryUsage("Agent Exit"); }
public void UpdateTileSynchronous(List <BirthdayContact> tileContacts, int count = 0, Action callback = null) { #if DEBUG DebugUtility.DebugOutputMemoryUsage("Beginning UpdateTileSynchronous"); #endif var displayName = ""; #if DEBUG DebugUtility.DebugOutputMemoryUsage("UpdateTileSynchronous - Loaded Data"); #endif Deployment.Current.Dispatcher.BeginInvoke(() => { #if DEBUG DebugUtility.DebugOutputMemoryUsage("UpdateTileSynchronous - Medium Tile Control Created"); #endif ShellTile mainTile = ShellTile.ActiveTiles.First(); using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication()) { #if WP8 RadFlipTileData tileData = null; if (tileContacts.Count > 0) { displayName = tileContacts.First().DisplayName; BirthdayTileBackViewModel backTileModel = new BirthdayTileBackViewModel(tileContacts); MediumTileBackUserControl medBackTile = new MediumTileBackUserControl() { DataContext = backTileModel }; WideTileBackUserControl wideBackTile = new WideTileBackUserControl() { DataContext = backTileModel }; tileData = new RadFlipTileData() { Title = Resources.AppTitle.ToTitleCase(), BackTitle = Resources.AppTitle.ToTitleCase(), BackgroundImage = appStorage.FileExists(string.Format(isoStorePath, displayName, "m")) ? new Uri(string.Format(isoStoreUri, displayName, "m"), UriKind.RelativeOrAbsolute) : new Uri("/Assets/Tiles/BirthdayTileMedium.png", UriKind.Relative), BackVisualElement = medBackTile, SmallBackgroundImage = appStorage.FileExists(string.Format(isoStorePath, displayName, "s")) ? new Uri(string.Format(isoStoreUri, displayName, "s"), UriKind.RelativeOrAbsolute) : new Uri("/Assets/Tiles/BirthdayTileSmall.png", UriKind.RelativeOrAbsolute), WideBackgroundImage = appStorage.FileExists(string.Format(isoStorePath, displayName, "w")) ? new Uri(string.Format(isoStoreUri, displayName, "w"), UriKind.RelativeOrAbsolute) : new Uri("/Assets/Tiles/BirthdayTileWide.png", UriKind.RelativeOrAbsolute), WideBackVisualElement = wideBackTile }; } else { tileData = new RadFlipTileData() { Title = Resources.AppTitle.ToTitleCase(), BackgroundImage = new Uri("/Assets/Tiles/BirthdayTileMedium.png", UriKind.Relative), SmallBackgroundImage = new Uri("/Assets/Tiles/BirthdayTileSmall.png", UriKind.RelativeOrAbsolute), WideBackgroundImage = new Uri("/Assets/Tiles/BirthdayTileWide.png", UriKind.RelativeOrAbsolute), }; } #if DEBUG DebugUtility.DebugOutputMemoryUsage("UpdateTileSynchronous - RadFlipTileData created"); #endif #else RadExtendedTileData tileData = null; if (tileContacts.Count > 0) { displayName = tileContacts.First().DisplayName; BirthdayTileBackViewModel backTileModel = new BirthdayTileBackViewModel(tileContacts); MediumTileBackUserControlWP7 medBackTile = new MediumTileBackUserControlWP7() { DataContext = backTileModel }; tileData = new RadExtendedTileData() { Title = Resources.AppTitle.ToTitleCase(), BackTitle = Resources.AppTitle, BackgroundImage = appStorage.FileExists(string.Format(isoStorePath, displayName, "m")) ? new Uri(string.Format(isoStoreUri, displayName, "m"), UriKind.RelativeOrAbsolute) : new Uri("/Assets/Tiles/BirthdayTileMedium.png", UriKind.RelativeOrAbsolute), BackVisualElement = medBackTile }; } else { tileData = new RadExtendedTileData() { Title = Resources.AppTitle.ToTitleCase(), BackgroundImage = new Uri("/Assets/Tiles/BirthdayTileMedium.png", UriKind.RelativeOrAbsolute) }; } #if DEBUG DebugUtility.DebugOutputMemoryUsage("UpdateTileSynchronous - RadExtendedTileData created"); #endif #endif try { LiveTileHelper.UpdateTile(mainTile, tileData); } catch (Exception ex) { DebugUtility.SaveDiagnosticException(ex); throw ex; } } #if DEBUG DebugUtility.SaveDiagnosticMessage("Completed tile update"); #endif if (callback != null) { callback.Invoke(); } }); }