2

ファイルを再生するために、単純なコンソール アプリケーションでメディア プレーヤー オブジェクトを作成しています。メディア プレーヤーは正常に起動していますが、close() メソッドを使用すると、プロセスが実行され、メディア プレーヤー ウィンドウが閉じません。何をする必要がありますか?ここに私が書いたコードがあります..

WindowsMediaPlayer player= new WindowsMediaPlayer();
player.OpenPlayer("c:\\abc.wmv");
Thread.Sleep(2000);
player.controls.stop();
player.close();

ここでは、プロセスは終了せず、ファイルは引き続き実行されます。アプリケーションを閉じるにはどうすればよいですか?

4

2 に答える 2

1

自動化インターフェイスには、プレーヤーを強制的に終了させる方法がありません。理想的とは言えないアプローチは、それを殺すことです:

        var prc = Process.GetProcessesByName("wmplayer");
        if (prc.Length > 0) prc[prc.Length - 1].Kill();

より良いマウス トラップは、プレーヤーを独自の GUI に埋め込むことです。これは、Winforms で簡単に行うことができます。

于 2012-01-27T22:36:39.250 に答える
0

Marshal.ReleaseComObjectを呼び出してCOMオブジェクトを閉じる必要があると思います。COMは、プレーヤーを二度と使用しないことを認識していないため、プロセスを閉じることはできません。

メモリプレッシャーがない場合は発生しない可能性があるため、このためにガベージコレクションに依存しないでください。Marshal.ReleaseComObjectを手動で呼び出します。

于 2012-01-27T21:59:28.790 に答える