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

时间:2010-02-18 15:48:43

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

我是Windows CE开发的新手,但从未完成过。需要专家的一些建议。

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

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

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

提前致谢。 软件工程师

6 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

正如其他人所提到的,.NET Compact Framework是可行的方法。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

SQL CE数据库实例是本地文件存储上的单个文件(.sdf)(很像旧的Access数据库),不作为单独的服务运行。所以一定要整齐地关闭数据库连接(使用finally子句!)。

从简要阅读你的应用程序上下文来看,我认为你不会有大规模的多访问/连接池问题。

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

  1. sllllooooowwww(图形加速器不可用或其他)
  2. 标签不会自动调整大小,只读 multilne文本框是一个东西 有时会重新开始
  3. 按钮上的文字不会自动换行
  4. 不支持动画GIF PictureBoxes
  5. 当您修改了在设备上运行的代码时,您会发现很难移回代码,因此请完全保留源代码管理中的新树... :(