none
关于WPF程序偶尔会崩溃(自动关闭)问题,大家有什么支招啊? RRS feed

  • 问题

  • 公司有一项目,用WPF写的,放置一触摸屏PC上运行(Atom平台),项目中包含一模块,就是视频与图片轮流循环播放。经测试发现:若启动程序,让该模块循环播放两天两夜,程序都不会崩掉。但是若有人不断点击,切换其它程序模块操作,然后再返回该模块时,偶尔会无缘无故崩掉,程序也捕捉不到错误。只能在“计算机管理--事件查看器--应用程序”当中找到一个.net Rumtime错误。

    Application: Wpf_UI.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: exception code c0000005, exception address 156F2E6D
    有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

    另外,在其它模块操作之后,再返回视频与图片循环播放时,视频偶尔也会出现花屏,并且不断在闪闪。视频格式为wmv。

    以上问题,都是偶尔出现,找不到必然点。

    找了好久,没有找到相关解决方法,各位有什么建议啊?

    2012年2月8日 7:32

答案

  • 任务管理器也可以抓, 在你的进程崩溃的时候,不要立刻关掉它,打开任务管理器,找到你的进程,右击:


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 lovsan 2012年2月16日 7:41
    2012年2月13日 3:22
    版主

全部回复

  •  exception code c0000005 访问无权限。

    不过要调试这种问题,起码得有调用堆栈。或者抓个Dump。另外,还是建议在非Atom平台和其他操作系统环境下测试。

    还有,进程会加载很多库,组件,这些组件也会由于它本身的异常导致你的程序崩溃。这种情况还是需要详细调用堆栈,或者详细 Process 操作日志去发现了。 Process Monitor 工具可以跟踪进程,记录大量信息,你可以试着去监控一下。

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月8日 9:15
    版主
  • 还有,有时候切换回来,在播放视频的时候就会崩掉。弹出“应用程序遇到问题需要关闭……发送错误报告,不发送”,程序逻辑里是捕获不到错误,但是在应用程序事件查看器里找到以下错误:

    错误应用程序 wpf_ui.exe,版本 1.0.0.0,错误模块 wmvdecod.dll,版本 11.0.5721.5262,错误地址 0x000e2d6d。

    有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

    针对wmvdecod.dll模块出错,我也换过rmvb格式,好像也是与wmv格式一样,在解码这一块出错。

    在这里,我在考虑是不是WPF某些程序会影响到视频的解码呀?令人头痛的是,它关键不是每次都会报错,只是偶尔会出现。

    还有就是如果仅仅只是图片与视频循环播放,也不会出现问题,只是在切换到其它功能模块,再切换回来时就有可能会出现。

    2012年2月8日 12:06
  • 挺难搞得。下次出错的时候试着抓个Dump,这样起码我们能分析下是那个模块出了问题。

    WPF能影响的估计也只有互操作上面MediaElement和解码之间的问题了。但是你的设计本身应该没有问题,估计问题还是在于外围组件, 要么在MediaElement或者WMP组件内部。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月9日 2:34
    版主
  • 嗯,是难得搞。我的视频播放是用DirectShow.net做的,把它写控件,然后再引用到WPF里。

    Bob Bao,你说抓Dump,指的是用Process Monitor 抓吗?

    Process Monitor 这个工具好像记录系统所有的进程,信息量好大啊。然而我的程序,也不是会在短时间内会崩掉,可能会在不断地来回切换窗口才有可能发生。这样以来Process Monitor 记录的信息可能大到使得机器跑起来就卡。

    还有没有其它方式能抓这个Dump呀?我的程序里也有类似于App_DispatcherUnhandledException的异常捕获,都未能捕获到。

    2012年2月9日 3:31
  • 任务管理器也可以抓, 在你的进程崩溃的时候,不要立刻关掉它,打开任务管理器,找到你的进程,右击:


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 lovsan 2012年2月16日 7:41
    2012年2月13日 3:22
    版主
  • XP系统不能吧!程序崩了,啥都没有了,相当于关闭了程序。
    2012年2月13日 5:33
  • 好惨哪,这个问题也无法长时间放在debugger里面运行监控,内存太吃紧了。  你尝试看下wer有没有Windows Error Report生成。看看他是否带有dump文件信息。 如何用wer,你可以看下http://blogs.msdn.com/b/wer/archive/2009/03/16/faq.aspx


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月14日 6:47
    版主
  • 唉,没有办法啦,只能想想其它途径

    2012年2月16日 7:41
  • 我的也碰到这个问题 好烦,楼主解决了吗?
    2012年3月18日 3:14
  • 换axMediaPlayer 情况会好点 性能上比mediaElement好得多

    2012年6月30日 9:12