2012-07-19 112 views
0

我还没有使用后台代理更新LiveTiles。我更新应用程序退出时的磁贴,并在Application_Deactivated上更新。在Application_Deactivated上更新LiveTile是一种很好的做法吗?

private void Application_Deactivated(object sender, DeactivatedEventArgs e) 
    { 
     CycleManager pCycMan = CycleManager.Instance; 
     pCycMan.WriteToIsolatedStorage(); 

     ResourceManager resMan = new ResourceManager("xxx.AppResources", Assembly.GetExecutingAssembly()); 

     ShellTile PrimaryTile = ShellTile.ActiveTiles.First(); 
     StandardTileData tile = new StandardTileData(); 

     try 
     { 
      if (PrimaryTile != null) 
      { 
       tile.BackTitle = resMan.GetString("liveTileTitle"); 
       tile.BackBackgroundImage = new Uri("/Background.png", UriKind.Relative); 


       if (pCycMan.GetStartDate() == pCycMan.GetDefaultDate()) 
       { 
        tile.Title = resMan.GetString("liveTileNotTrackingStatus"); 
       } 
       else 
       { 
        tile.Title = m_liveTileText; 
       } 

       PrimaryTile.Update(tile); 
      } 
     } 
     catch(Exception) 
     { 
     } 
    } 

这样做是一个很好的做法吗?该应用程序已发布,并且我收到了带有COMException的StackTrace。它表明在执行Microsoft.Phone.Shell.ShellTile.Update后引发的例外是XXX.App.Application_Deactivated

有没有人知道这个例外或面临这种情况?如果有人能指导我,这将是非常有帮助的。

回答

1

Application_Deactivated事件发生时,您有10秒钟时间来完成您的任务。 之后,您的应用程序将被终止。

所以,也许发生这样的崩溃是因为你的代码需要10秒以上才能完成。

相关问题