Здравствуйте, если сталкивались с похожей проблемой, подскажите, пожалуйста.
Задача:
Необходимо из кода на c# запустить скрипт на питоне и взаимодействовать (т.е. отправлять в его стандартный вход строки текста и считывать из его стандартного вывода строки текста) продолжительное время.
Я пошел стандартным путем: создал процесс, запустил его и стал ждать, когда мой питонов скрипт выдаст первую строчку текста, чтобы я ее прочитал и отправил в ответ свою строчку. и тут возникла проблема - в поток моей программы на c# ничего не приходит от питонова скрипта до тех пор, пока он не завершиться. Т.е. у меня не получилось организовать "живое" взаимодействие, которое мне так нужно :(
Вот пример моего кода на c#
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = "\"C:\\Program Files\\Python35\\python\"";
start.Arguments = "test.py";
start.UseShellExecute = false;
start.CreateNoWindow = true;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
start.RedirectStandardInput = true;
Process p = Process.Start(start)
string line = p.StandardOutput.ReadLine();
В последней строке происходит следующее:
Если питонов скрипт ждет на свой стандартный вход строку, то вызывающий код на c# замирает на последней строке до тех пор, пока вручную не прибьешь процесс.
Если питонов скрипт на вход ничего не ждет, выводит сообщения на стандартный вывод и завершается, то вызывающий код успешно считывает строку, после чего питонов скрипт успешно завершается, но взаимодействия не получается.
Повторяю вопрос: как организовать обмен множеством сообщений в обе стороны между кодом на c# и питоновым скриптом.
Спасибо за внимание.