.NET Compact 3.5 で実行されている Windows Mobile 6.1/6.5 アプリケーションに取り組んでいます。このアプリケーションは、古い HP iPaq 210 で何年も正常に実行されていますが、Socket SoMo 655 で実行するのに問題があります。
OpenNETCF ライブラリの LargeIntervalTimer 機能を除いて、ほとんどすべてが正常に機能します。デバイスが PC に接続されたままになっている場合、タイマーは実際に機能しますが、それ以外の場合、デバイスはこのタイマーがウェイクアップできないサスペンド モードに陥ります。
さて、これが LargeIntervalTimer の目的全体です。サスペンド モードに入っているデバイスを起動して、何らかのタスクを実行できるようにします。それは iPaq で正しく動作し、一見どのような種類のスリープ モードからも正常に復帰します。ただし、SoMo では、デバイスをオフにするのに十分な時間放置した後、タイマーは作動しません。
誰にもアイデアはありますか?マネージ コード内で使用できる任意の電源状態からデバイスをスリープ解除する別の方法はありますか?
編集:
有益な提案をしてくれた Josef に感謝します。また、わざわざテスト アプリを書いてくれてありがとう。私が知る限り、イベントはデータベースに正しく追加されています。アプリケーションを実行し、[開始] を押してすぐに [停止] を押すと、1 つの新しいエントリ (テスト アプリ自体によって作成されたもの) があることがわかります。ただし、[スタート] を押して自分のアプリケーションを開いてから元に戻って [ストップ] を押すと、2 つの新しいエントリが表示されます。これは、動作中の iPaq と問題のある Socket の両方のデバイスに当てはまります。
デバイスがサスペンドモードに入ることを許可された後、問題はソケットの電源状態に関係しているに違いないと考えています。ソケットが USB 経由で PC に接続されたままになっている場合、LargeIntervalTimer は正しく動作します。これは、接続中にデバイスが完全にスリープ状態にならないためだと思います。ただし、デバイスのプラグを抜いてサスペンド モードに入ると、タイマーが起動しません。
とにかく、助けてくれてありがとう。私はまだアイデアを受け入れていますが、見落としている単純な解決策があるようには見えません...
編集2:
Socket SoMo 655 は Windows CE を実行しているのに対し、Socket SoMo 650 (アプリケーションが完全に動作する) は Windows Mobile 6.5 を実行していることに気付きました。OpenNETCF ライブラリに干渉しているこれらのモバイル オペレーティング システム間に違いはありますか?