-2

我有一个正在编辑的程序,其中 GUI 在 C# 中创建,然后在 Python 中运行该过程。目前,Python 正在执行以下操作:

SetupLog()
log = logging.getLogger()
log.info()

跟踪过程中的事件。有没有办法将此信息发送回 C# GUI?

我还尝试在 C# GUI 中创建一个取消按钮,该按钮将在退出/取消时终止 Python 模块,并且想知道是否有比基于进程 ID 执行此操作更好的方法?

4

1 回答 1

1

这是可能的,但这确实不是最好的做事方式。

除非该SetupLog功能禁用它,否则 Python 的默认日志记录会将日志消息打印到其标准错误。

在 C# 中运行进程有多种方法;如果您正在使用,例如,System.Diagnostics.Process这样做,您只需将ProcessStartInfo.RedirectStandardError属性设置为 true,然后启动进程,然后从其StandardError流中读取。事实上,如果您查看 MSDN 文档,就会有一些示例文档可以完全满足您的需求。


但是该logging模块将添加日志头信息,您必须在 C# 代码中解析这些信息,这是一种浪费。logging当然,这意味着除了与父母沟通之外,您不能用于其他任何事情。

如果您同时编写 Python 代码和 C# 代码,那么只使用显式匿名管道(或套接字,或命名管道,或......)并让双方都知道他们正在相互交谈会更干净,而不是试图欺骗他们这样做。

于 2013-08-23T02:11:18.863 回答