C# C级过程控制C++;应用程序,无法读取输出 我需要从C++应用程序中控制C++编写的控制台应用程序。 C应用程序不能读取任何来自C++应用程序的输出。当使用函数process.StandardOutput.ReadLine()时,应用程序将冻结。我尝试用C++打印(“测试样本\r\n”)和控制台。样本C应用程序工作得很好,C++没有。所以我不知道我在哪里犯了错误。也许C++应用程序写的很差,但我不知道如何解决它。 C++中主应用程序的代码示例,它控制C++或C语言编写的另一个应用程序。

C# C级过程控制C++;应用程序,无法读取输出 我需要从C++应用程序中控制C++编写的控制台应用程序。 C应用程序不能读取任何来自C++应用程序的输出。当使用函数process.StandardOutput.ReadLine()时,应用程序将冻结。我尝试用C++打印(“测试样本\r\n”)和控制台。样本C应用程序工作得很好,C++没有。所以我不知道我在哪里犯了错误。也许C++应用程序写的很差,但我不知道如何解决它。 C++中主应用程序的代码示例,它控制C++或C语言编写的另一个应用程序。,c#,c++,controls,C#,C++,Controls,和两个测试应用程序 在C中++ int main(){ while (true) { std::this_thread::sleep_for(std::chrono::milliseconds(500)); printf("Test send data\r\n"); } return 0;} 在C中# 看看这些答案:以及 , 它们既可以提供解释,也可以提供解决方案 我还尝试使用ReadLineAsync: while ((line = await

和两个测试应用程序

在C中++

int main(){
while (true) {
    std::this_thread::sleep_for(std::chrono::milliseconds(500));
    printf("Test send data\r\n");               

}
return 0;}
在C中#


看看这些答案:以及 , 它们既可以提供解释,也可以提供解决方案

我还尝试使用ReadLineAsync:

while ((line = await process.StandardOutput.ReadLineAsync()) != null)
    Console.WriteLine(line);

它成功了。注意,如果你选择了这个解决方案,你必须在代码中做一些修改,使它成为代码> AycC++ (你也可以把它打包在一个任务中,这完全取决于你的需要)。没有回车(应该由底层的库代码自动添加)?我试过了,但它也是同样的问题。当你的C++应用程序在重定向输出时自动将STDUT置于缓冲模式。在缓冲区填满或标准输出关闭之前,缓冲区不会被刷新,其内容也不会提供给你的C#app。当你睡那么多的时候,这将需要相当长的时间,至少一到两分钟。使用fflush()或std::flush。@HansPassant谢谢您的帮助。它工作得很好!:)
static void Main(string[] args)
    {
        while (true)
        {
            Thread.Sleep(500);
            Console.WriteLine("Test send data");
        }
    }
while ((line = await process.StandardOutput.ReadLineAsync()) != null)
    Console.WriteLine(line);