ProcessXを使いたい。
参考:neue cc - ProcessX - C#でProcessを C# 8.0非同期ストリームで簡単に扱うライブラリ
標準のProcess
クラスは、現代風でない使い心地であるほか、ハマりポイントもある。
参考:非同期外部プロセス起動で標準出力を受け取る際の注意点 - Qiita
そのため、直触りは幸福度が高くない。
そこでProcessX。コンパクトなのでサクッと導入して using。
using Cysharp.Diagnostics;
例として、ImageMagickでも起動してみる。
// 簡潔! await ProcessX.StartAsync("magick source.png -resize 128x dest.bmp").WaitAsync();
コマンド実行そのままというフィールで使える。
次は標準出力を扱ってみる。
// !!! var data = await ProcessX.StartReadBinaryAsync($"magick source.png -resize 128x bmp:-");
直触りでやろうとするととても億劫な部分なので、とても幸福度が高い。
CancellationToken
を使ったキャンセル、ExitCodeに応じたエラー、直接ストリームで入出力を触るようなAPI、などなどきっちり用意されている。
今からならProcess
クラスを調べるよりこちらの方がQOLの高い選択肢、だと思う。