繁体   English   中英

如何将值从C ++主应用程序返回到C#GUI应用程序?

[英]How to return value from C++ main application to C# GUI application?

我想知道怎么做? 例如,如果在C ++主应用程序中发生异常,如何向GUI应用程序发送内容? 任何简单的例子将不胜感激。

如果C#GUI应用程序启动C ++控制台应用程序,则前者的退出代码main()函数的返回值)可由前者访问,请参阅此处的示例: Process.ExitCode 一般的解决方案是使用某种形式的进程间通信 (IPC)。 Windows示例: 此处此处

假设C ++和C#中的两个应用程序是不同的进程,则不能这样做。 (但是你可以返回一个错误代码 - 介于0和255之间 - 在子进程中exit并在父进程中使用waitpid获取它)。

但是(至少在Linux上)你可以拥有一个文本的双向通道(在Linux上,使用命名或匿名管道或AF_UNIX套接字)并在两个进程之间定义一个协议。

如果您的应用程序假设退出或不退出您的c ++应用程序中发生异常,那么我不是很清楚吗? 如果您的应用程序假设在错误发生时退出:

  1. 在发生错误时在C ++代码中使用“exit(errorCode)”,即errorCode是一个整数
  2. 在您的C#应用​​程序中执行excecute c ++ exe的进程,为Exited事件注册处理程序(确保将进程上的EnableRaisingEvents设置为true)。
  3. 在事件处理程序中读取运行c ++ exe的进程对象的“ExitCode”。

但如果在您的c ++应用程序中处理错误并且只想通知GUI,那么一个解决方案是:

  1. 在c ++应用程序中发生错误时将错误写入一个文件中
  2. 在C#应用程序中,我们创建一个读取此文件的线程,当文件内容发生更改时,将一个事件发送到主线程。

注意:对于两个进程之间的通信,不止一种方式可能是本文可以帮助您: http//en.wikipedia.org/wiki/Inter-process_communication

一种方法是使用WCF服务。 我最近在一台需要与另一台机器上的C ++ / CLI应用程序通信的机器上编写了一个C#GUI,我只是通过WCF交换信息(包括错误消息),它在同一台机器上运行同样好。 此外,这种方法为您提供了学习WCF的借口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM