C#アプリケーションでMATLAB .NETライブラリを​使用した単体テスト実​行後、「testho​st.exe」プロセ​スが残留しないように​する方法はありますか​?

C#アプリケーションに、MATLAB Compiler SDKで.NETライブラリとしてビルドしたMATLABモジュールを組み込み、単体テストを実行しています。この単体テストは、MSTestやxUnitといったC#向けの自動テストフレームワーク(テストを自動で実行・管理する仕組み)を利用して実施しています。
テストを実行すると、「testhost.exe」というプロセスが起動します。このプロセスは、MSTestやxUnitなどのテストフレームワークがテストコードを実行する際に、その実行環境(ホスト)として自動的に立ち上がるのが仕様のようです。従って、C#コード内でMATLAB .NETライブラリを呼び出す場合のみ、「testhost.exe」プロセスが起動します。該当する呼び出しをコメントアウトしてMATLABの処理を行わないようにした場合は、このプロセスは起動しません。
しかし、すべての単体テストおよび.NETライブラリの処理が正常に終了した後も、「testhost.exe」プロセスがタスクマネージャー上に残り続けることが確認されました。このようなプロセスの残留は、リソースが正しく解放されていないことを示唆しています。そのため、繰り返しテストを実施したり、アプリケーションをデプロイしたりする際に、リソースリークなどの問題が発生する可能性があり、対策が必要だと考えています。

 Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 17 Fév 2026

0 votes

「testhost.exe」プロセスがテスト終了後も残留する主な原因は、.NET環境からMATLABコードを実行するために必要なMATLAB Runtime(実行環境)が完全にシャットダウンされていないことによるものと考えられます。
この問題を解決し、MATLAB Runtimeおよび関連プロセスを確実に終了させるには、MATLAB Compiler SDKが提供する終了用の関数を明示的に呼び出す必要があります。
具体的には、すべてのMATLAB関数のテストが終了し、これ以上MATLABライブラリを呼び出す必要がないタイミングで、
MWMCR.TerminateApplicationEx()
を呼び出してください。この手順により、MATLAB Runtimeが適切に解放され、「testhost.exe」プロセスも正常に終了します。

Plus de réponses (0)

Catégories

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!