2013-08-23 35 views
-2

我有一個程序,我正在編輯GUI在C#中創建,然後在Python中運行該過程。目前,Python正在執行以下操作:從Python代碼發送日誌信息到C#GUI

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

跟蹤過程中的事件。有沒有辦法將這些信息發送回C#GUI?

我也試圖在C#GUI中創建一個取消按鈕,在退出/取消時會殺死Python模塊,並且想知道是否有更好的方法,而不是基於進程ID進行操作?

回答

1

這是可能,但這確實不是最好的辦法。

除非SetupLog函數禁用它,Python的默認日誌記錄會將日誌消息打印到它的stderr。

有多種方式在C#中運行進程;如果您正在使用(例如System.Diagnostics.Process)來執行此操作,則只需將ProcessStartInfo.RedirectStandardError屬性設置爲true,然後啓動該流程,然後從其StandardError流中讀取。事實上,如果你看看MSDN文檔,那就是你想要的sample docs


logging模塊將添加日誌頭信息,你必須在你的C#代碼,這是一種浪費解析出來。當然,這意味着除了與父母溝通之外,您不能使用logging進行其他任何操作。如果你正在編寫Python代碼和C#代碼,只要使用一個明確的匿名管道(或套接字,或命名管道,或......),並且雙方都知道他們是彼此交談,而不是試圖欺騙他們這樣做。