使用Visual Basic / Visual Studio 12在Windows窗体EXE中进行COM

时间:2013-07-31 09:03:38

标签: vb.net visual-studio-2012 com automation exe

我通常不在.NET框架中编程,但是我需要使用它来创建一个简单的exe应用程序来记录来自某些测量设备的数据。我希望这个应用程序有一个带有几种方法的自动化接口。我在使用Delphi / Pascal之前已经完成了这个并且它非常简单,我可以在Visual Studio中创建一个类库来注册自己和方法,并且可以很容易地与它接口但是向Windows窗体应用程序添加一个ComClass不工作,有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

这开始是一个评论,但只是不断增长,希望我不会偏离轨道......

您只能注册一个dll。所以简短的回答是在项目中添加一个类库并将com类放在那里。这将允许您共享该类的功能,但不是该类的实例

我认为您的问题是您正在尝试建立Interprocess Communications。我的直接建议是不要这样做,至少在开始时是这样。

首先,您可以使用带有.net类库的com应用程序界面来记录数据。然后,您可以使用带有.net可执行文件的另一个项目来显示日志,并定期更新。现在你在围栏两侧都有.net代码,可以开始研究让他们互相交谈的方法。

困难的部分是调用方法和返回值。如果您确实需要响应式系统,则可以调查命名管道进程间通信,或使用两个系统之间具有回调的WCF服务。问题是,在任何一种情况下,你都被类库所困扰,而不是由.net托管,所以你的功能有限(没有配置文件等)。如果你能忍受时滞,我建议你只需要开始将消息写入本地数据存储区,然后每隔30秒左右从每个客户端进行轮询。例如,应用程序将创建一条消息,说“给我测量A”,然后开始每秒轮询。 DLL将有一个计时器,并在30秒内读取该消息并用测量写出自己的消息,EXE将读取然后显示。一旦启动并运行该系统,您就可以决定是否需要处理进程间通信,这实际上只是一个不同的接口。