我有一个我从我的程序调用的DLL,它将状态输出到Visual Studio输出窗口(假设这是标准输出),我想在运行时捕获该输出。
如何执行此操作的所有示例都假设我使用Process来启动外部应用程序或控制台应用程序,然后从Process实例捕获StandardOutput,我自己已经做了好几次。但在这种情况下,我的程序直接调用DLL - 我没有开始额外的过程。
当我的程序调用DLL时,我想读取它打印到标准输出的内容以记录它以进行调试,如果DLL失败则可能退出程序。当DLL调用返回时,我的程序应该正常继续。
我知道我需要另一个线程来处理DLL输出,而我的另一个线程在DLL调用中;我只是不知道如何捕获输出。
答案 0 :(得分:2)
您的程序可以调用Console.SetOut
来用您自己的实现替换标准输出流。
这应该允许您根据需要捕获标准输出。请注意,您可能还需要替换标准错误流,具体取决于DLL如何写入输出。