См. В качестве примера, я открываю CMD и перехожу в папку, из которой я хочу получить данные, затем использую ее, чтобы открыть приложение с агентами со стандартным (все синхронно) вводом кода.
public static Process Start(bool DoNotShowWindow = false)
{
ProcessStartInfo cmdStartInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
UseShellExecute = false,
CreateNoWindow = DoNotShowWindow
};
Process cmdProcess = new Process
{
StartInfo = cmdStartInfo,
EnableRaisingEvents = true
};
return cmdProcess;
}
//in other method
Process cli = InteractWithConsoleApp.Start();
cli.Start();
cli.StandardInput.WriteLine("cd /");
cli.StandardInput.WriteLine("cd " + path);
cli.StandardInput.WriteLine("fantasygold-cli getbalance abc");
Thread.Sleep(5000);
Проблема
Теперь, когда я использую StandardOutput.Readline, он начинается с начала и возвращает мне все, как первые две строки авторского права, пустые строки и даже ввод, который в моем случае, после ожидания 5 секунд длярезультат Я хочу прочитать строку или до конца в зависимости от ввода, откуда я ввел.
возможное решение
Одно решение, которое я нашел, состояло в том, чтобы изменить позицию, но оказалось, что это не такего поддержка, и даже копирование в другой потоковый ридер не работает (позиция не по строке).
Хорошо, я могу использовать фильтры, такие как проверка двойного или для адреса, начинающегося с F и имеющего длину 36Проблема возникает, когда я хочу получить весь JSON, например, за прошлые транзакции, для чего я думаю использовать фильтры типа '{', а затем проверить for '}' Предупреждение в этом было бы плохим кодом, который мне не нужен.
TLDR
Итак, что может быть решением моей проблемы здесь:)