【问题标题】:WebBrowserTask bug when pressing the back button very quickly (WP7)快速按下后退按钮时出现 WebBrowserTask 错误 (WP7)
【发布时间】:2011-01-04 14:04:49
【问题描述】:

我有一个 WebBrowserTask 在单击按钮时调用:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        WebBrowserTask webBrowserTask = new WebBrowserTask();
        webBrowserTask.URL = "http://msdn.microsoft.com";
        webBrowserTask.Show();
    }

当我在我的应用程序中单击此按钮,然后我很快单击设备的后退按钮时,我的应用程序崩溃了,甚至没有调用 Application_Activated() 方法..

这是 SDK 的错误吗?您可以在模拟器或您的设备上轻松重现该问题。

有什么解决方法吗?这似乎发生在所有任务(短信、电子邮件等)中。

谢谢

【问题讨论】:

    标签: windows-phone-7


    【解决方案1】:

    您确定跳过的是您的 Application_Activated 而不是您的构造函数吗?

    如果它崩溃是因为你的构造函数没有被调用,那么很可能你已经足够快地重新启动了你的应用程序,以至于它没有被墓碑化,正如彼得在此处更详细地描述的那样。

    How to correctly handle application deactivation and reactivation - Peter Torr's Blog

    如果不是这种情况,是否您的应用最初不是使用 RTM 工具创建的,需要根据新的项目模板进行迁移?

    【讨论】:

    • 奇怪的是,它退出后,如果我在 Visual Studio 中按 Run,它会从停止的地方继续,通过调用 activate 方法!
    • 如果我尝试从设备恢复它,没有任何反应,它会停在加载屏幕并永远停留在那里。
    • 我当然可以看看重现它,但我可以先问一下,您是否在空白项目中重现了这种行为?如果需要任何少量代码来复制它,您能否向我们展示您原始问题中的那些代码作为编辑? (ps最好在cmets中聊天,而不是提出新的答案)
    • 是的,你可以用一个空白项目来重现它,只需创建一个带有启动新 WebBrowserTask 按钮的新项目。然后单击按钮并在 1 秒后按返回按钮。做几次。如果第一次尝试没有发生,请重新部署并再次尝试。它只是毫无例外地退出,并且永远不会调用激活的方法或任何其他方法。
    • 我发现了这个帖子:stackoverflow.com/questions/3260968/… ,似乎当手机连接并通过调试器运行应用程序时,当您从任务返回时,您必须再次按 F5 才能恢复调试器...如果您在手机上运行应用程序,没有调试器一切正常。感谢您的帮助 MickN
    【解决方案2】:

    导航到另一个页面/任务不是您调用页面并等待返回结果的同步过程。如果速度够快,甚至可以在任务开始之前以正常方式关闭应用程序。

    【讨论】:

    • 如果是这种情况,那么它应该执行 Application_Closing() 方法,但它没有。或者,如果 Application_Deactivated() 方法中存在错误,我应该得到一个异常或其他东西。 Application_Deactivated() 方法正常执行。
    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 2012-02-23
    • 2020-09-25
    • 2021-09-14
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多