2

考虑这段代码:

Task.Factory.StartNew (() => {
    try {
        Console.WriteLine ("Throwing");
        throw new Exception ();
    } catch {
        Console.WriteLine ("Gotcha!");
    }
});

Throwing在 iOS 模拟器上,它Gotcha!按预期打印。
但是,当为设备编译时,它只打印Throwing而从不打印Gotcha!

为什么会这样?
我正在使用 MonoTouch 6.0.8。
我也可以在 6.0.6 上重现它。

我在这里放了一个示例项目,你可以尝试在设备上运行它
(别管这个名字——当我发现这个时,我正在调查另一个崩溃)。

4

2 回答 2

2

我刚刚发现它只发生在启用 LLVM 的情况下。
也许这是一个错误,所以我会将它报告给 Xamarin。

有趣的是,添加

BeginInvokeOnMainThread (() => {
    new UIAlertView ("Gotta catch 'em all!", "", null, "OK", null).Show ();
});

通话后Console.WriteLine帮助 - 我看到警报和日志条目。

这是我的示例项目

于 2012-12-21T23:28:30.260 回答
1

也许是一个愚蠢的问题,但是否满足了需要 catch 命令的条件?

如果是这样,应用程序可能会在返回“Gotcha”之前中断,并且 iOS 命令会接管。

我相信 iOS 会倾听您的命令/应用程序是否以及何时中断,因为默认功能会启动来处理这个问题。类似于 dealloc 命令。

于 2012-12-21T23:29:41.557 回答