我正在编辑一个程序,在C#中创建GUI,然后在Python中运行该过程。目前,Python正在执行以下操作:
SetupLog()
log = logging.getLogger()
log.info()
跟踪流程中的事件。有没有办法将这些信息发送回C#GUI?
我也在尝试在C#GUI中创建一个取消按钮,它会在退出/取消时终止Python模块,并且想知道是否有比基于进程ID更好的方法吗?
答案 0 :(得分:1)
可能,但这确实不是最好的做事方式。
除非SetupLog
函数禁用它,否则Python的默认日志记录会将日志消息打印到其stderr。
在C#中运行进程有多种方法;如果您正在使用System.Diagnostics.Process
来执行此操作,则只需将ProcessStartInfo.RedirectStandardError
属性设置为true,然后启动该过程,然后从其StandardError
流中读取。事实上,如果您查看MSDN文档,那么sample docs可以完全满足您的需求。
但logging
模块将添加日志标头信息,您必须在C#代码中解析这些信息,这是一种浪费。当然,这意味着除了与父母的沟通外,你不能将logging
用于其他任何事情。
如果您正在编写Python代码和C#代码,那么使用显式匿名管道(或套接字,或命名管道,或......)并让双方都知道他们正在谈话会更加清晰相互之间,而不是试图诱骗他们这样做。