【问题标题】:Main form randomly dissappears after a reboot of CE deviceCE设备重启后主窗体随机消失
【发布时间】:2016-10-07 07:24:54
【问题描述】:

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

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

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

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

问题似乎只在对接时发生(与单路对接相比,在 4 路对接中发生的更多,因为 4 路可以进行更多网络连接),并且在重新启动后很难调试。

显示的白屏是在应用程序启动时显示的初始屏幕,它只是位于背景中,因此看起来“登录”屏幕已以某种方式被隐藏或处置。

作为临时解决方案,我创建了一个名为“Form_Deactivate()”的方法,每当“登录”屏幕失去焦点时调用该方法,当它失去焦点时,我调用“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()

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

【问题讨论】:

  • 当你的应用程序加载时,听起来通用窗口“废话”仍在继续,因此其他事情正在集中注意力和控制,并且仍然对正在发生的事情感到不安
  • 能否请您发布此启动程序的代码?您在使用摩托罗拉 AppCenter 吗?我会向你推荐这个。 AppCenter 可以处理程序的自动启动并限制普通用户对操作系统的访问。

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


【解决方案1】:

首先,当您的应用使用 \Windows\Startup 中的 lnk 启动时,您的应用和 Compact Framework 使用的 API 函数可能尚未准备好使用。有一个原生函数 IsAPIReady 来检查不同的 API 集。

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

如果您想编写自助服务终端模式应用,您必须定期检查更多情况,以防止用户离开自助服务终端应用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多