0

.NET CF ベースのアプリケーションでの Windows Media Player の問題は無限にあります。.NET CF 3.5 アプリケーションの 1 つで、ActiveX コントロールを使用してビデオを再生しています。メディア プレーヤーの ActiveX コントロールのコードは、この MSDN の記事からのものです。メモリリークの問題はほとんどありませんでしたが、バグはこの記事の助けを借りて整理されています

新しい問題 - アプリケーションを終了すると、ユーザー インターフェイスは閉じますが、プロセスはバックグラウンドで実行されます。これは、タスク マネージャーの [プロセス] タブに表示されます。このハング プロセスは、システムを完全に不安定にします。ビデオを数回再生した後、システム全体がハングし、強制的に再起動します。

終了後にプロセスがバックグラウンドでハングする理由と、コードのどの修正によってプロセスが完全に終了するかを理解するのを手伝ってください。

4

1 に答える 1

0

まず、コードでアプリを終了していること (およびこのコードが実行中であること) を確認していますか、それともユーザーが右上の X をクリックしていますか (タッチ スクリーン デバイスの場合)。X はデフォルトでアプリを閉じないため、質問します。アプリを最小化するだけです (自分でもっと何かをするなどのアクションを起こさない限り)。

それが問題ではないと仮定すると、この限られた情報に基づいて回答するのは難しいですが、適切にリリースされていない ActiveX オブジェクトがあると推測されます。使用している ActiveX コントロールに自分のアプリへの参照を渡す場合 (および他のコントロールに自分を解放するように指示しない場合)、問題のオブジェクトは自分のアプリである可能性があります。したがって、コードを調べて、作成された場所、AddRef された場所など、すべての COM オブジェクトのインベントリを取得し、それらを解放および/または null に設定していることを確認することをお勧めします (おそらく追加の適切な最初にオブジェクトの再生を停止するように指示するなど、オブジェクト自体のクリーンアップなど)。

PSあなたの投稿は、問題がアプリが終了すべきときに終了しないことなのか、それとも意図的にしばらく実行した後にデバイスがハングすることなのかについて、少しあいまいでした...

于 2010-02-17T03:38:44.707 に答える