2

环境

  • 视窗 XP SP3 x32
  • Visual Studio 2005 标准版
  • 霍尼韦尔 Dolphin 9500 掌上电脑/Windows Mobile 2003 平台
  • .NET Framework 1.1 和 .NET Compact Framework 1.0 SP3
  • 使用 VC#

问题

当我将内置相机和 Honeywell SDK ImageControl 中的图像保存到设备的存储卡或内部存储器时,需要 6 - 7 秒。

我目前将图像保存为 PNG,但也可以选择 BMP 或 JPG。

代码中的相关行:144-184 和 222,特别是 162,163 和 222。


目标

我想将时间减少到 2 或 3 秒,如果可能的话甚至更少。

作为次要目标,我正在寻找专门支持 .NET Compact Framework 1.0 版的 Pocket PC 2003 设备的分析套件。理想情况下是免费的,但不受限制的简短教程也可以。


我尝试过的事情

  • 我通过 System.Threading 稍微研究了异步 I/O,但我没有经验知道这是否是一个好主意,也不知道如何为单个操作实现线程。
    • 在下面的代码中实现了线程,似乎有一个微不足道的速度增加,可能是一秒或更短。但是,下一个表单上的某些内容需要图像,可能正在保存,我不知道如何减轻等待或处理这种情况,真的。
  • 编辑:使用 threading将保存格式从 PNG 更改为 BMP 或 JPG似乎可以大大减少保存时间。.

代码

http://friendpaste.com/3J1d5acHO3lTlDNTz7LQzB
让我知道代码是否应该在代码标签中发布。它有点长(约 226 行),所以我继续粘贴它,因为这在我上一篇文章中似乎是可以接受的。

4

2 回答 2

3

通过将保存格式从 PNG 更改为 BMP 并包括代码链接中显示的线程代码,我能够将保存时间减少到约 1 秒。

于 2011-03-22T19:13:11.567 回答
1

您将受到霍尼韦尔 SDK 的摆布,因为他们的控制是实际保存图像。在单独的线程(即不是 UI 线程)上调用它根本没有帮助(正如您所发现的那样),它实际上会使您的事情变得更加困难,因为您需要等到保存任务完成在进入下一个表格之前完成。

我能提出的唯一建议是确保将图像保存到内部存储器(而不是 SD 卡),因为写入 SD 卡通常比写入内存花费更长的时间。或者看看你是否可以从霍尼韦尔获得技术支持——6-7 秒对于这样的任务来说似乎太长了。

或者查看 Honeywell SDK 是否允许您将图像作为字节数组获取(而不是保存到磁盘)。如果此调用在 6-7 秒内返回,您可以自己处理持久化它。

于 2011-03-22T14:58:32.517 回答