2012-07-02 4 views
0

Я получил следующий стек. Но я не могу понять, какая функция из этого класса подняла это. Может ли кто-нибудь сказать мне, что такое MainPage..ctor?InvalidProgramException - Stacktrace

«Frame Изображение Функция Offset

0 coredll.dll xxx_RaiseException 19

1 mscoree3_7.dll 520892

2 mscoree3_7.dll 461967

3 mscoree3_7.dll 534468

4 TransitionStu б 0

5 System.InternalTimeZoneInfo.TransitionTimeToDateTime 520

6 System.InternalTimeZoneInfo.GetDaylightTime 100

7 System.InternalTimeZoneInfo.GetIsDaylightSavingsFromUtc 128

8 System.InternalTimeZoneInfo.GetUtcOffsetFromUtc 500

9 System.DateTime.ToLocalTime 164

10 System.DateTime.get_Now 72

11 System.DateTime.get_Today 44

12 xxxx.MainPage..ctor 84

13 mscoree3_7.dll 507848

14 mscoree3_7.dll 184683

15 mscoree3_7.dll 183987

16 mscoree3 _7.dll 183375

17 System.Reflection.RuntimeConstructorInfo.InternalInvoke 104

18 System.Reflection.RuntimeConstructorInfo.InternalInvoke 1056

19 System.Activator.InternalCreateInstance 1112"

Это главный конструктор:

public MainPage() 
{ 
    InitializeButtons(); 
    CreateCalendar(); 
    DisplayHistory(); 
    DisplayStatistics(); 
} 

И внутри CreateCalendar Я инициализировал переменную DateTime currentDate = DateTime.Today; Является ли это тем, что создает проблему?

+0

Привет, вы могли бы поделиться каким-то кодом? Например, тот, который вы используете в конструкторе MainPage? Попробуйте поместить этот код в метод MainPage.Loaded event, а не внутри contructor ... –

+0

MainPage .. ctor is constructor – alfah

+0

Да, "ctor" означает конструктор –

ответ

2

Я предлагаю вам перенести методы на страницу нагруженного события следующим образом:

public MainPage() 
{ 
    InitializeComponent(); 
    Loaded += MainPage_Loaded; // you may declare it in xaml as well 
} 

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    CreateCalendar(); 
    DisplayHistory(); 
    DisplayStatistics(); 
} 

В зависимости от вида операции вы выполняете внутри каждого метода -mainly, если он envolves интерфейс -это было бы рекомендовать завернуть его в Диспетчере:

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    CreateCalendar(); //assuming this method does not use UI 
    Dispatcher.BeginInvoke(() => 
    { 
    //asuming these methods use UI 
    DisplayHistory(); 
    DisplayStatistics(); 
    }); 
} 

Попробуйте и дайте нам знать ,,

веселит

+0

Спасибо. Я попробую это и опубликую результаты. Не могли бы вы объяснить, почему нужен диспетчер. Все три функции включают в себя как пользовательский интерфейс, так и другую операцию манипулирования данными. Диспетчер может иметь только пользовательские интерфейсы или обе данные? – alfah

+0

Все элементы управления WP7 рисуются потоком пользовательского интерфейса. С другой стороны, все вызовы в WP7 являются асинхронными, поэтому, когда вы выполняете операцию, а вызывающий поток отличается от потока пользовательского интерфейса, он не может выполнять какую-либо операцию UI напрямую. Dispatcher.BeginInvoke ставит в очередь такой вызов как рабочий элемент в потоке пользовательского интерфейса. –

1

В моем случае эта ошибка иногда возникала из-за синих с некоторыми незначительными изменениями. Он не прошел этап инициализации тестов при запуске Silverlight Unit Test Framework. Изменения были внесены в проект, который косвенно ссылался на проект Unit Test (т. Е. Проект Unit Test, на который ссылается библиотека Windows Phone и библиотека, на которую ссылается PCL с изменениями).

Это лишний, чтобы сказать, что код, который я добавил, не выполнялся вообще, когда произошел сбой!

После комментирования нового кода с использованием метода деления пополам я закончил тем, что комментирование одной строки прекратило исключение. Строка была такой:

var items = jData ["items"]. Выбрать (token => token.ToObject()). ToList();

где jData - экземпляр JObject от известного Json.NET. Обновление последней версии Json.NET не помогло.

исчезла ошибка после замены выражения LINQ с явным некрасиво для цикла (издеваясь Resharper говорит «для цикла может быть преобразовано в выражение LINQ).

Поэтому я начинаю верить в магию.

Надеюсь, что это кому-то поможет.

Смежные вопросы