在VB6中使用.Net NamedPipes与C#应用程序进行通信

时间:2016-01-21 05:45:50

标签: c# vb6 named-pipes

更新
1 - 新的C#应用​​程序在.Net框架上公开NamedPipeServerStream(System.IO.Pipes) 2 - Legacy VB6需要与C#NamedPipeServerStream通信 3 - 到目前为止VB6驻留在没有.Net框架的系统中。但是,未来C#和遗留应用程序都将安装在安装了.Net的计算机上 3 - VB6可以使用 CallNamedPipe()与C#管道服务器通信吗?这种方法在维护应用程序之间的通信方面是否无忧无虑?

我可以查看的任何资源或其他方法?

旧问题: 我有一个遗留的VB 6.0应用程序,需要使用.Net NamedPipes与较新的C#应用​​程序进行通信。

目前,传统的VB6应用程序位于没有.Net的系统上。 当我在该系统上安装.Net框架和C#NamedPipeServer应用程序时,旧版VB6程序如何通过NamedPipes与C#应用程序通信?

请告诉我。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我使用的VB6应用程序需要来自一组WCF服务的数据。

实现这一目标的最简单方法是将逻辑与.Net程序集中的远程系统进行通信,该程序集通过COM公开操作并从VB6代码调用该程序集。

请参阅https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.comvisibleattribute(v=vs.100).aspx作为起点。

答案 1 :(得分:0)

如果您正在使用System.IO.Pipes,那么幸运的是,您不必处理被称为WCF的愚蠢和互操作性噩梦。

要在VB6中编写一个漂亮的管道客户端,需要使用C ++编写的控件或类来管理异步I / O并引发事件。否则你可能不得不使用Timer来轮询输入,但它是相当简单的API I / O.

我不知道今天通常可用的任何便宜或免费的ActiveX DLL或OCX,我怀疑微软曾经生产过。但是定时器驱动的轮询方法应该有很多例子可以让你入门。它可以让您免受可怕的低效率,停止和溅射,以及使用.Net Interop的所有开销使您的VB6程序陷入困境的巨大内存。

但这总是一种选择。