Тест выгорания для WP7 - PullRequest
4 голосов
/ 28 мая 2011

Я испытываю очень странные проблемы при разработке приложения WP7, которые обычно происходят через 30 минут или 1 час, несмотря на то, что код действительно прост, почти равен примерам. Эмулятор не имеет никаких проблем.

  • приложение вылетает без исключения
  • необработанное исключение: {"0xffffffff"} (Да, сообщение - "0xffffffff". И Stacktrace - ноль)
  • как только я получил исключение при получении свойства DateTimeOffset.Now (!)
  • Поток пользовательского интерфейса заморожен, не удалось завершить приложение, пришлось выключить и снова включить устройство

Так что на данный момент я думаю, что либо 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 Ответ

2 голосов
/ 30 мая 2011

Я бы заподозрил утечку памяти (или ресурса).
Что делает приложение?
Произошла ли ошибка при использовании приложения или вы просто покинули его?Делает ли приложение что-нибудь по таймеру?
Вы пытались отслеживать использование памяти в течение всего времени жизни приложения?

Поскольку в фоновом режиме с эмулятором происходит меньше других приложений и событий, необходимостьдля системы вернуть ресурсы из вашего приложения гораздо меньше.Поэтому возможно, что такие проблемы могут не отображаться в эмуляторе.

Если вы получите последнюю (бета) версию инструментов разработчика [mango], вы сможете выполнить свой код через новый, встроенный в профилировщик, чтобы вы могли видеть, что происходит с течением времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...