WP7的老化测试

时间:2011-05-28 09:35:59

标签: windows-phone-7

我在开发通常在30米或1小时后发生的WP7应用程序时遇到了非常奇怪的问题,尽管代码非常简单,几乎与示例相同。模拟器没有任何问题。

  • app崩溃,没有异常被抛出
  • 未处理的异常:{“0xffffffff”}(是的,消息是“0xffffffff”。而Stacktrace为空)
  • 一旦我获得DateTimeOffset.Now属性(!)
  • 时抛出异常
  • 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个小时。

1 个答案:

答案 0 :(得分:2)

我怀疑是内存(或资源)泄漏 该应用程序做什么?
使用应用程序时是否发生错误,或者您是否只是离开了? 应用程序是否在计时器上执行任何操作? 您是否尝试在应用程序的生命周期内监控内存使用情况?

由于使用模拟器在后台进行的其他应用程序和事情较少,因此系统需要从您的应用程序中回收资源的可能性要小得多。因此,在仿真器上可能也看不到这些问题。

如果您获得[mango]开发人员工具的最新(测试版)版本,您将能够通过新的内置分析器运行代码,以便随时查看正在发生的事情。