首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB6 LinkExecute等价于C#

VB6 LinkExecute等价于C#
EN

Stack Overflow用户
提问于 2016-10-31 03:17:08
回答 1查看 599关注 0票数 0

在VB6中,有一个名为LinkExecute女巫的表单事件,我可以使用它将两个项目链接在一起。例如,我用一个按钮创建项目A并将其链接到项目B,当我单击项目A上的按钮时,项目B中的文本框发生了更改。

为了简化这一想法,它将两个项目链接起来,并让其中一个项目侦听其他事件,当主项目上发生特定事件时,侦听器会在侦听器项目上本地触发一个事件。

这两个项目都是WinForms,并且运行在同一台机器上。

项目A

代码语言:javascript
复制
Private Sub Command1_Click()
    On Error Resume Next

    Text1.LinkTopic = "Project1|SYSTEM"
    Text1.LinkItem = "TEXTSource"
    Text1.LinkMode = vbLinkManual
    Text1.LinkRequest ' "Hello World"

    Text1.LinkExecute "Hello World"

    DoEvents
End Sub

Public Sub Form_Load()

End Sub

项目B

代码语言:javascript
复制
Private Sub Command1_Click()
    Label1.Caption = Val(Label1.Caption) + 1    
End Sub

Private Sub Form_LinkClose()
    List1.AddItem "Form_LinkClose"
    Command1_Click
End Sub

Private Sub Form_LinkError(LinkErr As Integer)
    List1.AddItem "form_LinkError"
    Command1_Click
End Sub

Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
    List1.AddItem "Command " & CmdStr & " has been received"
    Cancel = False
    Command1_Click
End Sub

Private Sub Form_LinkOpen(Cancel As Integer)
    List1.AddItem "Form_LinkOpen"
    Cancel = False
    Command1_Click
End Sub

Private Sub Form_Load()
    List1.Clear
    Command1_Click
End Sub

Private Sub PictureSource_LinkClose()
    List1.AddItem "PictureSource LinkClose"
    Command1_Click
End Sub

Private Sub PictureSource_LinkError(LinkErr As Integer)
    List1.AddItem "PictureSource LinkError: Error = " & LinkErr
    Command1_Click
End Sub

Private Sub PictureSource_LinkNotify()
    List1.AddItem "PictureSource LinkNotify"
    Command1_Click
End Sub

Private Sub PictureSource_LinkOpen(Cancel As Integer)
    List1.AddItem "PictureSource LinkOpen"
    Command1_Click
End Sub

那么,LinkExecute在C#中的等效性是什么,或者如何在C#中实现相同的功能呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-31 03:44:48

DDE是一种较旧的进程间通信协议,它严重依赖于在应用程序之间来回传递windows消息。其他更现代、更健壮的进程间通信技术(如进程间通信 )是可用的,为了让两个项目交换事件,它们必须就这些事件的通信方式达成一致。这样做有很多不同的方法,具体使用哪种方法可能取决于体系结构和上下文。

您还可以查找一些常用的技术,如文件(从公共文件中读取)命名管道队列(MSMQ)、使用TCP/UDP套接字连接、使用WebServices、WCF或Restful、远程过程调用(RPC)、从数据库中的公共条目读取。(不推荐),窗口消息共享内存。当您自己实现这两个应用程序时,您可以选择使用您喜欢的任何IPC方法。网络套接字和基于更高级套接字的协议,如HTTP、XML和SOAP,因为它们允许您在不同的物理机器上运行应用程序。

我更喜欢使用MSMQ,因为它将保留在不同机器中拥有进程的能力。

  1. MSMQ允许您不丢失消息(万一接收器关机)
  2. MSMQ允许您在同一台计算机或不同的计算机中拥有进程。
  3. Windows服务使您能够轻松启动/停止进程。
  4. Windows服务可以监视我的SNMP,一般来说,它们很容易与windows管理工具集成。

编辑

答案的参考文献取自侦听另一个应用程序中的事件向两个正在运行的应用程序发送/接收消息NDde: CodePlex

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40336116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档