2024-09-26 22:53:33 发布
网友
我有一个正在编辑的程序,其中GUI是用C#创建的,然后用Python运行这个过程。目前,Python正在执行以下操作:
SetupLog() log = logging.getLogger() log.info()
跟踪过程中的事件。有没有办法将这些信息发送回C#GUI?你知道吗
我还试图在C#GUI中创建一个cancel按钮,它将在退出/取消时终止Python模块,我想知道是否有比基于进程ID更好的方法?你知道吗
这是有可能的,但这并不是最好的方法。你知道吗
除非SetupLog函数禁用它,否则Python的默认日志记录会将日志消息打印到其stderr。你知道吗
SetupLog
在C#中运行进程有多种方法;如果您使用System.Diagnostics.Process来执行此操作,只需将ProcessStartInfo.RedirectStandardError属性设置为true,然后启动进程,然后从其StandardError流中读取。事实上,如果你看看MSDN文档,有sample docs正是你想要的。你知道吗
System.Diagnostics.Process
ProcessStartInfo.RedirectStandardError
StandardError
但是logging模块将添加日志头信息,您必须在C代码中解析这些信息,这是一种浪费。当然,这意味着除了与父级通信之外,您不能使用logging。你知道吗
logging
如果您同时编写Python代码和C代码,那么只使用显式匿名管道(或socket,或named pipe,或……)并让双方都知道他们在相互交谈,而不是试图诱使他们这样做,会更干净。你知道吗
这是有可能的,但这并不是最好的方法。你知道吗
除非
SetupLog
函数禁用它,否则Python的默认日志记录会将日志消息打印到其stderr。你知道吗在C#中运行进程有多种方法;如果您使用
System.Diagnostics.Process
来执行此操作,只需将ProcessStartInfo.RedirectStandardError
属性设置为true,然后启动进程,然后从其StandardError
流中读取。事实上,如果你看看MSDN文档,有sample docs正是你想要的。你知道吗但是
logging
模块将添加日志头信息,您必须在C代码中解析这些信息,这是一种浪费。当然,这意味着除了与父级通信之外,您不能使用logging
。你知道吗如果您同时编写Python代码和C代码,那么只使用显式匿名管道(或socket,或named pipe,或……)并让双方都知道他们在相互交谈,而不是试图诱使他们这样做,会更干净。你知道吗
相关问题 更多 >
编程相关推荐