2012-02-26 128 views
0

我正在使用位置服务的应用程序。如果我正在调试,该应用程序工作正常。如果我在没有调试的情况下启动(在重建后),在第一次运行时它会在请求使用位置服务的授权时崩溃。会发生什么情况是,如果让它坐下来,并显示消息框足够长的时间(5-10秒),就会崩溃。如果我在没有再次调试的情况下启动它,它仍然可以正常工作(尽管它不会再显示消息框,因为不知何故,它会在该条件语句之后通过该行到达下一行,它将首先运行设置为false(我假设,因为它没有“再显示)。为什么MessageBox.Show会导致UnhandledException?

再次,如果我调试,没有问题。如果我开始没有调试,它死。这是建设无论是在调试或发布模式时的情况。

如果我评论这块代码出来了,它的执行没有问题,如果我点击确定,它就快速执行,它执行时没有问题。如果任何人都可以向我解释为什么一个简单的messagebox检查ok会导致这样的问题,我很感激。谢谢!

回答

1

如果你看看MSDN文档的方法,对于可能出现的异常的原因是相当清楚的:

MDSN - MessageBox.Show Method

另一种可能性是,有在二传手运行设置一些代码.AllowLocation属性抛出异常。如果包含实际引发的异常,这将有所帮助。

+1

我相信它一定与后台运行的代码有关,但不确定它是否是setter(这是访问setter的唯一代码)。我确实通过将这段代码移动到可以显示自己位置的按钮事件来解决这个问题。它最初是在InitializeComponent()后面运行的,所以UI还没有被完全绘制,所以显然这个过程的背景中的东西会干扰MessageBox。谢谢! – 2012-02-26 14:16:58

1

我使用这种方式,它的工作原理:

var msg = MessageBox.Show("Do you .... ?", "Title", MessageBoxButton.OKCancel); 
if(msg == MessageBoxResult.OK) 
{ 
    //Do something; 
} 

好运

2

最有可能你是显示的OnNavigatedTo MessageBox中。如果是这种情况,this SO answer应该有所帮助。问题是如果用户没有按下按钮,你的应用程序将会崩溃,因为框架认为导航失败了。

是的,只有当调试器未连接时,才会出现此行为。

+0

这个问题的关键是它在特定时间后崩溃。您的代码必须运行在时间受限的函数中,例如OnNavigatedTo或生命周期处理程序。 – dmdrummond 2013-04-12 09:29:34

相关问题