0

コンテキスト オブジェクトのインスタンス化と破棄を必要とするサードパーティ ライブラリの機能をラップするバイナリ (C#) PowerShell コマンドレットを作成しています。このライブラリにはいくつかの癖があります。

  1. プロセスが終了する前にコンテキストを閉じる必要があります。そうしないと、その時点でプロセスが大声でクラッシュします。
  2. コンテキストのインスタンス化と破棄を短時間で繰り返し行うことを好まないか、内部エラーを生成し始めます。

#2 により、各コマンドレット内でのライブラリのインスタンス化と破棄はタイムスパンが短すぎるため、ライブラリをできるだけ長く維持する必要があります。したがって、ライブラリ コンテキストを PowerShell 実行空間のセッション状態に保存して、実行空間の期間中 (つまり、対話型シェルの有効期間) 持続することを計画しています。

しかし、#1 までに、実行空間を閉じる前にライブラリを破棄する必要があります。私が理解しているように、これはコマンドレットの有効期間外に発生します。ライブラリを破壊するために実行空間の終了にフックする方法はありますか? イベントを介してコマンドレット プロセス内でこれを行うことはできますがRunspace.StateChanged、コマンドレット プロセスが完了した後でも、実行空間が閉じるときにライブラリが確実に閉じられるようにする方法はありますか?

4

1 に答える 1