重启CE设备后,主窗体随机消失

时间:2016-06-07 11:48:29

标签: c# .net windows-mobile windows-ce

我有一个用C#.Net编写的应用程序,它运行在Motorola MC67 Windows Mobile设备上。

通过" Startup"文件夹我的应用程序在重新启动后自动启动,这会加载"登录"屏幕。据报道,重启后,设备偶尔会显示一个空白屏幕。

在这个阶段,软件没有崩溃,因为我能够使用一些设备物理按钮移动到新屏幕,然后导航回"登录"屏幕现在可以正确显示。

我无法找到问题的路线,并希望得到一些帮助。

这个问题似乎只发生在停靠时(与单个扩展坞相比,它在4路扩展坞中发生的更多,因为4路做更多的网络),因为重启后很难调试。

显示的白色屏幕是一个启动画面,在应用程序启动时显示,只是位于背景中,因此看起来"登录"屏幕以某种方式隐藏或处置。

作为临时解决方案,我创建了一个名为" Form_Deactivate()"的方法。只要"登录"屏幕失去焦点,当它失效时,我打电话给#34; this.BringToFront()"然后显示"登录"屏幕正确,不再显示白屏。

虽然这可能是一个可接受的解决方案,但我仍然试图找到问题的原因。

如果有帮助,当调用deactivate方法时,我强制执行异常以记录堆栈跟踪,但这对我没有帮助。

at InSync.LogonForm.Form_Deactivate(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnDeactivate(EventArgs e)
at System.Windows.Forms.Form.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at InSync.ApplicationManager.Start()
at InSyncLauncher.Program.Main()

如果有人有任何建议或事情我可以尝试解决这个问题的底部,我将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

首先,当您的应用程序以\ Windows \ Startup中的lnk启动时,API会对您的应用程序起作用,而Compact Framework使用可能还没有准备好使用。有一个本机函数IsAPIReady来检查不同的API集。

其次,OS系统可以将另一个窗口加载到前台,例如主屏幕。因此,您的应用应使用计时器定期将登录表单置于前台,或定期使用GetForGroundWindow检查前台窗口句柄是否为“登录”窗口(或您当前的活动窗口)。

如果您想编写自助服务终端模式应用程序,还有很多情况需要定期检查以防止用户离开自助服务终端应用程序。