.NETのCr​​eateObjectで開始されたプロセスのプロセスIDを取得する

StackOverflow https://stackoverflow.com/questions/2431736

  •  19-09-2019
  •  | 
  •  

質問

次のように、CreateObject を使用してプロセスを開始する Web アプリケーションに VB.NET を使用しています。

Dim AVObject = CreateObject("avwin.application")

すべてが完了すると、すべてが閉じられ、適切なリリース関数の使用が停止されますが、何らかの理由でプロセスは残ります。

終了直前にプロセスを明示的に強制終了するために、開始されたプロセスのプロセスIDを取得する方法はありますか?

ありがとう

役に立ちましたか?

解決

この問題に対する具体的な解決策は見つかりませんでしたが、論理的には以下の疑似ロジックを使用して回避策を作成します (制御された環境で機能すると思います)

  • CreateObject を CustomCreateObject(...) でラップします。
  • 以下のメソッドを同じシーケンスで実装します
  • System.Diagnostics.Process.GetProcessesByName(nameOfYourProcess) を呼び出し、すべてのプロセス ID を保存します
  • CreateObject を呼び出す (...)
  • GetProcessesByName を再度呼び出して、プロセス ID の新しいリストを取得します。
  • 最初のリストになく、後のリストにあるプロセス ID が、目的のプロセス ID になります。これを返すと、呼び出し元が監視するプロセス ID を知ることができます。

他のヒント

  すべてが完了したら、

すべてがアンを閉鎖取得プロセスが残っているいくつかの理由のために、しかし、適切なリリースの機能を使用して停止します。

あなたはGCを強制しようとしたか<のhref = "http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx" のrel = "nofollowをnoreferrer呼んでいます「>からReleaseComObject を()メソッド?

ベスト

アドリアーノ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top