是否可以在 Windows CE 平台上运行我的 Windows 窗体应用程序?

Posted

技术标签:

【中文标题】是否可以在 Windows CE 平台上运行我的 Windows 窗体应用程序?【英文标题】:Is it possible to run my Windows Form application in Windows CE platform? 【发布时间】:2011-01-18 09:29:24 【问题描述】:

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

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

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

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

提前致谢。 软件工程师

【问题讨论】:

【参考方案1】:

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

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

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

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

    sllllooooowwww(图形加速器不可用之类的) 标签不自动调整大小,只读 多行文本框是一个东西 有时会依靠 按钮上的文字不自动换行 不支持动画 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 明显不同,某些方面可能很容易移植,但可能需要进行大量修改。

【讨论】:

以上是关于是否可以在 Windows CE 平台上运行我的 Windows 窗体应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

串行 I/O 与 Windows/Windows CE 重叠/非重叠

Windows 10 使用 Visual Studio Express 2015 构建程序 使用 SQL Server CE 只是挂在其他平台上

将桌面快捷方式部署到运行 Windows CE 4.2 (VS2005) 的设备

windows ce 5.0 的应用程序是不是适合在 windows ce 6.5 上使用?

Framework 2.0怎么安装在windows CE上

Windows CE\Mobile 上的 Subsonic\ORM