在没有附加调试器时,WP8访问Task的结果会导致崩溃

时间:2014-01-17 11:19:55

标签: c# windows-phone-8

Task<string> t = Helpers.InsertTodoItem(todoItem, imageStream);
Dispatcher.BeginInvoke(() => MessageBox.Show("Inserted"));

t.ContinueWith((i) =>
{
    Dispatcher.BeginInvoke(() => MessageBox.Show("In ContinueWith"));
    try
    {
        Dispatcher.BeginInvoke(() => MessageBox.Show(t.Result.ToString()));
    }
    catch (Exception ze)
    {
        Dispatcher.BeginInvoke(() => MessageBox.Show(ze.ToString()));
    }

    //string r = (string)t.Result.Substring(t.Result.LastIndexOf('/') + 1);
    Dispatcher.BeginInvoke(() => MessageBox.Show("Uploaded"));

});

以上是我正在处理的WP8应用程序的代码段

在连接调试器(在模拟器或实际设备上)运行时,它可以正常工作。

当我在没有调试器的情况下运行它时,它会显示“In ContinueWith”消息,然后关闭。

有没有办法找出错误是什么并解决它?不会弹出异常

2 个答案:

答案 0 :(得分:0)

不要在延续方法中使用t,而是使用i,但它们是相同的。如果您怀疑问题在于访问结果,为什么不将t.Result包裹在某个try-catch块中?

答案 1 :(得分:-1)

事实证明,在显示消息框之后,执行将转移到下一行代码,由于未初始化的变量,空引用异常会在我看到消息框显示异常之前导致崩溃