GC.KeepAlive()
をどのように使用するのですか?GC.KeepAlive()をどのように使用するのか、どのような目的のために
iソケットを使用して端末(Windows-CE)からサーバーにファイルを転送します。
転送が必要な時間は8分です。 (タッチスクリーンが押されていない場合)5分のWindows CEのシャットダウン後
私はこのためにGC.KeepAlive()
を使用する場合、それは私の問題を解決するのですか? .NETのMSDNライブラリから事前
GC.KeepAlive()
をどのように使用するのですか?GC.KeepAlive()をどのように使用するのか、どのような目的のために
iソケットを使用して端末(Windows-CE)からサーバーにファイルを転送します。
転送が必要な時間は8分です。 (タッチスクリーンが押されていない場合)5分のWindows CEのシャットダウン後
私はこのためにGC.KeepAlive()
を使用する場合、それは私の問題を解決するのですか? .NETのMSDNライブラリから事前
で
おかげ:
キープアライブ方式の目的は、時期尚早であることの危険性がある対象に リファレンスの存在を保証することですガベージコレクタによって回収された 。これが発生する可能性のある一般的なシナリオは、 オブジェクトが管理コードまたはデータで参照されていない場合、 ですが、オブジェクトはWin32 API、 アンマネージドDLL、またはCOMを使用するメソッドなどのアンマネージコードで引き続き使用されています。
これでは問題は解決しません。実際、それはあなたの問題に関連するものではありません。 非常に - あなたが行うことができます 唯一のことは、限り転送が進行しているよう
あなたは非常にまれにGC.KeepAlive
を使用する必要がないシャットダウンにシステムを防ぐコードを追加し、Windows CEの上で実行されているサービス/アプリケーションでありますまれです。ファイナライザの副作用があまりにも早く起こるのを防ぐために使用します。私はたいていMutex
のためにそれを見てきました - アプリケーションの終わりまでmutexを生かして、インスタンスが1つしかないことを確認してください。実際にはusing
というステートメントが実際には優れていますが、これは別の問題です。
いいえ、あなたの状況に関連するようには聞こえません。
電源を切る画面は、デバイスの電源管理の設定です。それは、どんなアプリが走っているかどうかにかかわらず起こるだろう。 GCはこれとはまったく関係ありません。
電源装置が低電力状態になるのを防ぐには、いくつかの選択肢があります。定期的にSystemIdleTimerResetに電話することができます。
SetSystemPowerStateを使用して、電源状態を好きなように強制することができます。
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts]
(WM_SETTINGS_CHANGEブロードキャストIIRCが続く)の設定を調整することで、パワーマネージャのタイムアウトを好みに合わせて変更することができます。
ベストの「ソリューション」は、アプリの要件、ユーザーの要件、ターゲットデバイスの電源管理システムによって異なります。
このAPIを試しましたか? WinCEがアンマネージコードになっているので、MSDNによると、それは当てはまります。 – Zenwalker