背景: 我有一个基于.Net 3.5的WPF“棱镜”的应用程序运行在Windows XP和Windows PosReady 2009个人电脑上。该应用运行在每天晚上关闭的PC上(通过C#调用“shutdown.exe”)并在早上启动(通过LAN唤醒)。该应用程序是基于触摸的(使用ELO触摸屏),没有连接鼠标或键盘,用户无法访问Windows。WPF应用程序错误和.Net框架修复
问题: 我们偶尔看到两件事中的一件发生的问题;无论是应用程序似乎没有正确加载,我们看到一个空白的白色表单显示,或者它停止响应触摸。从查看我们的(log4net)日志,我们可以看到,我们仍然在处理触摸事件,并在两种情况下将它们注销。通常这在切换视图时会发生,我们也会在日志中看到Prism RegionManager正在移除和正确添加视图。
故障排除: 该应用程序正在运行使用具有施加的Clonezilla图像〜约100的PC和发生这种情况只是偶尔。由于它没有在所有PC上发生,并且在事件查看器中没有记录异常或任何指示问题的事件,因此我们采用了更多的PC和OS级修补程序。具体而言,我们尝试重新启动应用程序和偶尔短期成功的PC - 这意味着应用程序有时会在重新启动后正常运行,但最多只需要几个小时。我们也在假设应用程序已被破坏,并且已经删除并重新安装它,但没有成功。
似乎解决此问题的唯一方法是使用提供的.Net 3.5 SP1安装程序包修复.Net框架。
结论: 由于这似乎是解决这个问题的时候没有别的呢,我们似乎在某种程度上破坏一个GAC'd框架DLL - 无论是通过代码或PC上的开机/关机程序。
问题: 这导致了一些问题:
- 对我们如何才能进一步确定问题的根源任何想法?
- 有关我们可以采取哪些措施来防止此问题的任何想法?
- 有关潜在问题可能的任何想法?
感谢您的帮助。
很难说..你有多线程正在进行吗?从GUI线程以外触发的任何事件? – stmax 2012-02-14 22:40:15
在任何时候都有不同的线程。大多数情况下,它们都是作为BackgroundWorker对象创建的,但其中一些是使用ThreadStart显式创建的Thread对象。工作人员的寿命通常很短(创建,运行一次,销毁),并且线程通常很长时间(从应用程序的整个生命周期开始)。 Prism聚合事件在GUI线程中引发。 – 2012-02-15 22:01:00
这些机器是否有任何形式的固态驱动器硬件,或者它们是否都使用廉价的硬盘驱动器运行?哎哟。 – 2012-02-18 09:06:37