出力をキャプチャするために、あなた自身のICharacterDeviceを実装する必要があります。良いニュースは、WriteConsoleメソッドを実装する必要があることだけです。あなたはデフォルトのConsoleDeviceから始めることも、最初から自分自身を始めることもできます。
public class MyCharacterDevice : RDotNet.Devices.ICharacterDevice
{
public StringBuilder sb = new StringBuilder();
public void WriteConsole(string output, int length, RDotNet.Internals.ConsoleOutputType outputType)
{
sb.Append(output);
}
//rest of the implementation here
}
私はStringBuilderを追加して各出力メッセージを追加しました。
最後に、あなたは両方でGetInstanceにこのICharacterDeviceを渡すとメソッドを初期化する必要があります。
RDotNet.StartupParameter sp = new StartupParameter();
sp.Interactive = false;
sp.Quiet = false;
MyCharacterDevice ic = new MyCharacterDevice();
REngine.SetEnvironmentVariables(Rpath);
REngine engine = REngine.GetInstance("", true, sp, ic);
if (engine.IsRunning == false)
{
engine.Initialize(sp, ic, true);
}
//engine.Evaluate code...
string rConsoleMessages = ic.sb.ToString();
非常に素晴らしいソリューションデビッド。 WriteConsole()メソッドで簡単なロガーを呼び出して、WPFアプリケーションにライブ出力を表示させます。 – JavaJedi