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");
 }
Beispiel #5
0
        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();
                }
            });
        }