【问题标题】:Is it possible to run my Windows Form application in Windows CE platform?是否可以在 Windows CE 平台上运行我的 Windows 窗体应用程序?
【发布时间】:2023-04-04 06:23:01
【问题描述】:

我是 Windows CE 开发的新手,还没有做过。在这里需要专家的一些建议。

在我们当前的项目中,我们正在开发一个客户端-服务器应用程序。客户端使用基于 Windows XP 操作系统的 Windows 窗体应用程序,而服务器是基于 Web 的应用程序。

此问题与客户端应用程序(Windows 窗体)有关。此应用程序使用 Sql Server Express Edition 进行数据存储。数据以 XML 对象格式存储。它还可以通过 Web 服务将数据从客户端传输到服务器。它还与磁条阅读器、非接触式智能卡阅读器和热敏打印机等硬件进行交互。大多数硬件设备和系统之间的通信都是基于串行端口的。它使用标准 app.config 进行配置,是一个多线程应用程序。

对于使用 Windows CE 平台的手持设备有一个新的要求。该手持设备包括非接触式智能卡读卡器、打印机和磁条读卡器等所需设备。除了开发新的客户端应用程序,我是否可以将基于 Windows XP 的当前应用程序转换为 Windows CE?如果是,我该怎么做?如果不是,是否还有其他出色的建议可以这样做?

提前致谢。 软件工程师

【问题讨论】:

    标签: c# visual-studio windows-xp windows-ce


    【解决方案1】:

    您正在寻找的数据库技术是 SQL Server Compact Edition(又名 SQLCE)。

    SQL CE 数据库实例是本地文件存储上的单个文件 (.sdf)(很像旧的 Access 数据库),并且不作为单独的服务运行。因此,请务必巧妙地关闭数据库连接(使用 finally 子句!)。

    不过,通过简要阅读您的应用上下文,我认为您不会遇到大规模的多访问/连接池问题。

    关于 WinCE 上的 Windows 窗体的烦恼:

    1. sllllooooowwww(图形加速器不可用之类的)
    2. 标签不自动调整大小,只读 多行文本框是一个东西 有时会依靠
    3. 按钮上的文字不自动换行
    4. 不支持动画 GIF 图片框

    当您修改了在您的设备上运行的代码时,您会发现很难移植回来,因此请在您的源代码管理中完全保留一个新树... :(

    【讨论】:

      【解决方案2】:

      正如其他人所提到的,.NET Compact Framework 是必经之路。

      一个有用的提示:要确定 CF 是否支持某些东西,MSDN 页面上有一个小的手持图标,如果您滚动它会显示“.NET Compact Framework 支持”。因此,例如您转到 WaitHandle 方法,您可以看到支持 WaitOne,但不支持 WaitAny 或 WaitAll。这可以让您更好地了解您可能需要改变多少。

      【讨论】:

        【解决方案3】:

        这需要一些努力,但这是可能的。 Windows Forms 不等于 Windows Mobile,因为 Compact Framework 只是 .NET Framework 的一个子集。
        此外,您应该注意一些限制,特别是关于内存分配(WinCE 限制分配给单个应用程序的内存为 32mb)、线程和有限的计算资源(例如,在我公司的应用程序中,进行了一些屏幕更改通过独立线程)。

        【讨论】:

        • 您提到的每个进程 32MB 的 Windows CE 限制适用于 Windows CE 5 及更低版本。在 Windows CE 6 中没有这样的限制。
        • 观察得很好,我忘了补充 :) 但是考虑到 WCE5 设备的数量,也许它仍然是一个有效的考虑因素 :)
        • 好消息,我最担心的是性能问题,因为我的应用程序使用了大量的 I/O、内存使用和句柄​​。
        【解决方案4】:

        是的,可以使用.NET compact framework.

        但是,您必须意识到,CF 是完整 .NET 平台的子集,而 CLR 的 CE 版本与桌面版本具有不同的限制。

        您将能够重用您的大部分代码,但您将不得不花费大量时间重新设计您的 UI 并更改您的代码以解决紧凑框架的差异和限制。

        【讨论】:

        • +1 是的,非常小的子集。它肯定会让你说“哇哦真的吗?它不支持”,很快就会变成“#$%#$ 你是认真的吗!?”哈哈。祝你好运!
        【解决方案5】:

        这是可能的,但您必须将自己限制在.Net compact framework 中可用的内容。

        此版本的框架设计用于嵌入式设备和 Windows CE。

        【讨论】:

          【解决方案6】:

          Windows CE 中的 API 明显不同,某些方面可能很容易移植,但可能需要进行大量修改。

          【讨论】:

            猜你喜欢
            • 2010-10-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多