0

我收到了以下堆栈跟踪。但我无法弄清楚哪个类的哪个函数引发了这个问题。谁能告诉我 MainPage..ctor 是什么?

"帧图像函数偏移

0 coredll.dll xxx_RaiseException 19

1 mscoree3_7.dll 520892

2 mscoree3_7.dll 461967

3 mscoree3_7.dll 534468

4 过渡存根 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;这是造成麻烦的那个吗?

4

2 回答 2

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

根据您在每个方法中执行的操作类型 - 主要是如果它包含 UI - 建议将其包装到 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();
    });
}

试试看,让我们知道,,

干杯

于 2012-07-02T13:10:33.103 回答
1

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

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

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

var items = jData["items"].Select(token => token.ToObject()).ToList();

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

The error is gone after replacing LINQ expression with explicit ugly for loop (scoffing Resharper says "for loop can be converted to LINQ expression).

So I'm starting to believe in magic.

Hope this helps someone.

于 2013-07-08T14:50:02.017 回答