非同期実行 by powershell
非同期実行 by powershell
- RunSpace
- Start-Job
- Start-Process
- AppDomain
- 独立アプリ起動
- System.Diagnostics.Process
非同期中、標準入出力を制御できるもの。
- Start-Job : receive-job
- Start-Process: ファイル指定
- Process: Stream
終了値を取得できるもの
- RunSpace
- Start-Process
- Process
面倒ではあるが、Start-Processか、Processクラスを使用するのが最も柔軟性が高い。
簡単さを追い求めるなら、Start-jobが楽ではあるが、それでもRemove-Jobなどの後処理が必要。
最初は面倒ではあるが、ライブラリを作ってProcessクラスを使用するのも一つの手。
但し、今の所、非同期プロセスの標準出力を受け取り、WPFの様な別スレッドで使う方法が確立できておらず、もう少し調査が必要。
ProcessのDataReceivedEvent からのWPF/UIスレッドのDispatcher.BeginInvoke(Action)をPowerShellで試行した限りでは、Delegate=Actionの型が合わずにエラーとなり、未だ成功していない。手持ちの対策候補はスクリプトブロックを[action]型にキャストする程度であり、時間ができたら試行する予定。