我有一个在visual studio中运行的c ++控制台应用程序。这将收集数据并在控制台中显示所有原始数据。
另一个应用程序(C#)用于收集此信息并将其呈现给用户界面。
是否可以通过将C ++一个放在C#中来将两者结合起来,以便两者同时运行,而C ++应用程序将其信息输出到面板或类似的东西?
谢谢! :)
答案 0 :(得分:4)
一个非常快速的例子我必须做的事情就像我之前说的那样:
private void executeCommand(string programFilePath, string commandLineArgs, string workingDirectory)
{
Process myProcess = new Process();
myProcess.StartInfo.WorkingDirectory = workingDirectory;
myProcess.StartInfo.FileName = programFilePath;
myProcess.StartInfo.Arguments = commandLineArgs;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.RedirectStandardError = true;
myProcess.Start();
StreamReader sOut = myProcess.StandardOutput;
StreamReader sErr = myProcess.StandardError;
try
{
string str;
// reading errors and output async...
while ((str = sOut.ReadLine()) != null && !sOut.EndOfStream)
{
logMessage(str + Environment.NewLine, true);
Application.DoEvents();
sOut.BaseStream.Flush();
}
while ((str = sErr.ReadLine()) != null && !sErr.EndOfStream)
{
logError(str + Environment.NewLine, true);
Application.DoEvents();
sErr.BaseStream.Flush();
}
myProcess.WaitForExit();
}
finally
{
sOut.Close();
sErr.Close();
}
}
当然它并不完美,但它在执行powershell脚本时有效,我看到多线文本框中的输出在每次出现新内容时都会更新,更新我的文本框的方法是logMessage()
答案 1 :(得分:0)
据我了解,您可以从C#应用程序运行c ++应用程序,在另一个进程中启动它,然后重定向该进程的标准输出,以便您能够以您希望的方式使用它,例如你可以把它放在一个小组中。
答案 2 :(得分:0)