2

環境

  • Windows XP SP3 x32
  • Visual Studio 2005 Standard Edition
  • Honeywell Dolphin 9500 Pocket PC / WindowsMo​​bile2003プラットフォーム
  • .NETFramework1.1および.NETCompactFramework 1.0 SP3
  • VC#の使用

問題

内蔵カメラとHoneywellSDKImageControlからデバイスのストレージカードまたは内部メモリに画像を保存すると、6〜7秒かかります。

現在、画像をPNGとして保存していますが、BMPまたはJPGのオプションもあります。

コード内の関連行:144-184と222、具体的には162,163と222。


ゴール

その時間を2〜3秒程度に短縮し、可能であればさらに短縮したいと思います。

二次的な目標として、 .NETCompactFrameworkバージョン1.0を特にサポートするPocketPC2003デバイス用のプロファイリングスイートを探しています。理想的には無料ですが、自由な短いチュートリアルでも機能します。


私が試したこと

  • System.Threadingを介して非同期I/Oを少し調べましたが、これが良いアイデアであるかどうか、また単一の操作にスレッドを実装する方法を正確に知る経験がありません。
    • 以下のコードのようにスレッド化を実装すると、おそらく1秒以下のわずかな速度の増加があるようです。ただし、次のフォームの何かには、おそらく保存の過程で画像が必要であり、待機を軽減する方法やそのシナリオを処理する方法はまったくわかりません。
  • 編集:スレッドを使用して保存形式をPNGからBMPまたはJPGに変更すると、保存時間が大幅に短縮されるようです。

コード

http://friendpaste.com/3J1d5acHO3lTlDNTz7LQzB
コードをここにコードタグで投稿する必要があるかどうかを教えてください。少し長い(〜226行)ので、前回の投稿では許容できるように思えたので、先に進んでフレンドペーストしました。

4

2 に答える 2

3

保存形式をPNGからBMPに変更し、[コード]リンクに表示されているスレッデッドコードを含めることで、保存時間を最大1秒に短縮することができました。

于 2011-03-22T19:13:11.567 に答える
1

彼らのコントロールが画像の実際の保存を行っているので、あなたはこれについてHoneywellSDKに翻弄されています。これを別のスレッド(つまり、UIスレッドではない)で呼び出すことは(あなたが知っているように)まったく役に立ちません、そしてそれはあなたが保存タスクが完了するまで待つ必要があるので実際にあなたにとって物事をより難しくします次のフォームに進む前に完了しました。

SDカードへの書き込みは通常、メモリへの書き込みよりもかなり時間がかかるため、私ができる唯一の提案は、イメージを内部メモリ(SDカードではなく)に保存していることを確認することです。または、Honeywellからテクニカルサポートを受けることができるかどうかを確認してください。このようなタスクには6〜7秒は長すぎるようです。

または、Honeywell SDKでイメージを(ディスクに保存する代わりに)バイト配列として取得できるかどうかを確認してください。この呼び出しが6〜7秒以内に返される場合は、自分で永続化を処理できます。

于 2011-03-22T14:58:32.517 に答える