2011-05-28 51 views
4

儘管代碼非常簡單,幾乎等於示例,但我在開發通常在30m或1h後發生的WP7應用時遇到了很奇怪的問題。模擬器沒有任何問題。WP7的老化測試

  • 沒有例外的應用程序崩潰被拋出
  • 未處理的異常:{「0xffffffff的」}(是的,消息是「0xffffffff的」和堆棧跟蹤是空的。)
  • 一旦我得到了,而獲取的DateTimeOffset拋出的異常。現在財產(!)
  • UI線程凍結,無法終止應用程序,不得不電源循環設備

所以在這一點上,我認爲,要麼WP7確實是不穩定的或我的設備硬件故障。

是否存在對WP7的老化測試?像Memtest86,Prime和桌面的其他實用程序?


編輯:這裏是導致問題的代碼:

public partial class MainPage : PhoneApplicationPage 
{ 
    private Accelerometer _accelerometer; 
    private GeoCoordinateWatcher _gps; 

    public MainPage() 
    { 
     InitializeComponent(); 

     _accelerometer = new Accelerometer(); 
     _accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(_accelerometer_ReadingChanged); 
     _accelerometer.Start(); 

     _gps = new GeoCoordinateWatcher(GeoPositionAccuracy.High); 
     _gps.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(_gps_PositionChanged); 
     _gps.Start(); 
    } 

    void _gps_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
    { 
     Dispatcher.BeginInvoke(() => 
     { 
      TBLocation.Text = e.Position.Location.ToString(); 
     }); 
    } 

    void _accelerometer_ReadingChanged(object sender, AccelerometerReadingEventArgs e) 
    { 
     Dispatcher.BeginInvoke(() => 
     { 
      TBAccelX.Text = string.Format("X: {0:F2} g", e.X); 
      TBAccelY.Text = string.Format("Y: {0:F2} g", e.Y); 
     }); 
    } 
} 
<phone:PhoneApplicationPage 
    x:Class="AccelerometerTest2.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="True"> 

    <StackPanel> 
     <TextBlock Name="TBAccelX"/> 
     <TextBlock Name="TBAccelY"/> 
     <TextBlock Name="TBLocation"/> 
    </StackPanel> 

</phone:PhoneApplicationPage> 

編輯:正如我懷疑電話是錯誤的。該應用程序已在另一臺設備上正常運行5個小時。

回答

2

我會懷疑內存(或資源)泄漏。
該應用做什麼?
在使用應用程序時是否發生錯誤,或者您是否放棄它? 應用程序是否在計時器上執行任何操作?
您是否嘗試過在應用程序的生命週期內監視內存使用情況?

由於使用模擬器後臺中的其他應用程序和事件較少,因此係統從您應用程序回收資源的需求可能會少得多。因此,仿真器上可能無法看到這些問題。

如果您獲得[mango]開發人員工具的最新(測試版)版本,您將可以通過新的內置分析器運行代碼,以便隨時查看發生的情況。

+0

謝謝你的回覆。我發佈了代碼。該應用程序只顯示屏幕上的傳感器數據。 要在最新SDK上使用探查器,我必須以7.1爲目標,所以我無法在7.0版本的設備上運行。 – Zmaster 2011-05-31 19:51:44