c# - 如何调试卡在 Windows Phone 8.1 上的应用程序

标签 c# multithreading windows-phone-8.1 async-await win-universal-app

我正在开发 Windows Phone 8.1 应用程序。

我的应用程序在启动时完全挂起,并且不会根据用户输入移动/滚动。但是,如果我强行关闭我的应用程序并重新打开,它似乎工作正常。

所以有 2 个结果,两者有时都会发生,但不一致

  1. 应用完全挂起并忽略所有用户输入
  2. 应用程序正常运行

在检查输出窗口时,我观察到当第一种情况发生时,我的输出窗口显示了一系列线程退出,如下所示

The thread 0x680 has exited with code 259 (0x103).
The thread 0x780 has exited with code 259 (0x103).
The thread 0xc5c has exited with code 259 (0x103).
The thread 0x9a0 has exited with code 259 (0x103).
The thread 0xc90 has exited with code 259 (0x103).
The thread 0x4f4 has exited with code 0 (0x0).
The thread 0x2f4 has exited with code 0 (0x0).

但是,在应用程序正常运行的第二种情况下,我没有看到这些线程退出。

这让我觉得这可能是因为某些线程陷入无限循环而发生的。

除此之外,我没有看到任何可能导致此问题的异常

我确实看过thisthis链接。但它没有说明如何解决这些类型的问题。

如何调试这些类型的问题。导致 UI 完全挂起的问题。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

除了按照 Fred 上面的建议获得最小重现之外,尝试转到 Debug -> Exceptions... 菜单并启用 Thrown 让所有人都能看到如果弹出任何有趣的东西(注意:您通常会从 Windows 内部获得良性的第一次机会异常,所以请保留一粒盐)。

当应用程序处于挂起状态时,点击 VS 中的暂停 按钮并查看调试 -> Windows -> Parallel Tasks 窗口以查看您是否可以确定正在等待的内容。

最后,考虑在应用程序的不同点添加 Debug.WriteLine 调用(在 App 构造函数中,无论何时开始下载,无论何时完成下载,等等) .) 查看是否执行了任何代码。

关于c# - 如何调试卡在 Windows Phone 8.1 上的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30997413/

相关文章:

c# - "The process cannot access the file because it is being used by another process"

c# - 如何在 C# 中将多个 Action<T> 合并为一个 Action<T>?

java - 执行者服务中的执行者服务?

linux - 线程pthread的复用

c# - Windows 8.1中的http客户端取消请求

c# - 系统.Data.SqlTypes.SqlTypeException : SqlDateTime overflow

python - 如何使用 uwsgi web.py 运行后台功能?

c# - Universal App(Runtime API)中的多个音频流,XNA SoundEffect 替换

c# - 如何获取数据绑定(bind)列表控件中的特定布局

c# - 用任何设计模式或更好的方法替换 if else 语句