1

我有一个从我的程序调用的 DLL,它将状态输出到 Visual Studio 输出窗口(假设这是标准输出),我想在运行时捕获该输出。

如何执行此操作的所有示例都假设我使用 Process 启动外部应用程序或控制台应用程序,然后从 Process 实例捕获 StandardOutput,我自己已经做过多次了。但在这种情况下,我的程序直接调用 DLL——我没有启动额外的进程。

当我的程序调用 DLL 时,我想读取它打印到标准输出的内容以记录它以进行调试,如果 DLL 失败,可能会退出我的程序。当 DLL 调用返回时,我的程序应该会正常继续。

我知道我需要另一个线程来处理 DLL 输出,而我的另一个线程在 DLL 调用中;我只是不知道如何首先捕获输出。

4

1 回答 1

2

您的程序可以调用Console.SetOut以用您自己的实现替换标准输出流。

这应该允许您根据需要捕获标准输出。请注意,您可能还需要替换标准错误流,具体取决于 DLL 写入输出的方式。

于 2013-09-25T17:15:29.033 回答