InvalidProgramException - Stacktrace

时间:2012-07-02 10:25:56

标签: windows-phone-7 stack-trace utc

我收到了以下stacktrace。但我无法弄清楚哪个类提出了这个函数。谁能告诉我MainPage..ctor是什么?

  

“帧图像功能偏移

     

0 coredll.dll xxx_RaiseException 19

     

1 mscoree3_7.dll 520892

     

2 mscoree3_7.dll 461967

     

3 mscoree3_7.dll 534468

     

4 TransitionStub 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;这是造成问题的那个吗?

2 个答案:

答案 0 :(得分:2)

我建议您将方法移动到Page loaded事件,如下所示:

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();
}

取决于您在每个方法中执行的操作类型 - 主要是如果它包含UI -it建议将其包装到Dispatcher中:

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();
    });
}

尝试一下,让我们知道,

欢呼声

答案 1 :(得分:1)

在我的情况下,这个错误偶尔会出现一些微不足道的变化。它在运行Silverlight单元测试框架下的测试初始化​​阶段失败。在单元测试项目中间接引用的项目中进行了更改(即单元测试项目引用了Windows Phone库,并且库引用了PCL并进行了更改)。

当发生崩溃时,我添加的代码根本没有执行,这是多余的!

在用二分法注释掉新代码后,我最终评论了一行停止抛出异常。这条线是这样的:

var items = jData [“items”]。选择(token => token.ToObject())。ToList();

其中jData是来自着名的Json.NET的JObject实例。更新到最新版本的Json.NET没有帮助。

用显式丑陋for循环替换LINQ表达式后错误消失了(嘲笑Resharper说“for循环可以转换为LINQ表达式”。

所以我开始相信魔术。

希望这有助于某人。