私はモーション トラッキング デバイス用のアプリケーションに取り組んでおり、好奇心をそそる奇妙な動作を発見しました。デバイス SDK は 3 つの DLL で構成されており、そのうちの 1 つ (アプリケーションで使用されている主要な参照 DLL) は非ネイティブで、残りの 2 つはネイティブです。
アプリケーションには、コントローラー (デバイスとアプリケーション間の接続)、リスナー (追跡情報を受信する)、フレーム オブジェクトの無限ストリーム (リスナーが受信するデータ) の 3 つの主要なアクターがあります。これらのアイテムはすべて使い捨てであり、管理されていないリソースを使用していると思います。
コントローラーからリスナーを削除せずにコントローラーを破棄すると、その後の起動時にアプリケーションがクラッシュします。この動作は散発的であり、2 回目、3 回目、またはそれ以降の起動時に発生する可能性があります。
オブジェクトを破棄していることを確認していますが、どのロジックまたはロジックの欠如がこの種の動作を引き起こす可能性があるのか 、まだ非常に興味があります。実行可能ファイルの実行が停止すると、すべてのオブジェクトが破棄されることを期待しているためです。
デバイス ドライバーは参照を保持できますか? そして、これをトラブルシューティングする最良の方法は何ですか? したがって、問題は処分方法ではなく、何がこれを引き起こす/可能性があるか、そしてその理由、そしてどうすればシャーロック・ホームズにこれをさせることができるかです.
詳しくは:
- 例外なく
- デバッガーをアタッチしても詳細情報は提供されません