【问题标题】:How to convert "new EventHandler..." from C# To VB如何将“new EventHandler ...”从 C# 转换为 VB
【发布时间】:2017-08-30 05:16:32
【问题描述】:

我目前有一个用 C# 编写的示例应用程序,我想在我的 VB.NET 项目中使用其中的代码。现在,我试图复制的函数如下所示:

    private void Start(CardInfo networkCard, IEnumerable<int> universes)
    {
        socket = new StreamingAcnSocket(Guid.NewGuid(), "Streaming ACN Snoop");
        socket.NewPacket += new EventHandler<NewPacketEventArgs<Acn.Packets.sAcn.StreamingAcnDmxPacket>>(socket_NewPacket); //This is the line I'm having trouble with
        socket.Open(networkCard.IpAddress);

        foreach (int universe in universes)
            socket.JoinDmxUniverse(universe);

        dmxOutput = new DmxStreamer(socket);
        dmxOutput.AddUniverse(sendData.Universe);

        acnPortExplorer = new RdmNetEndPointExplorer();
        acnPortExplorer.LocalAdapter = networkCard.IpAddress;
        acnPortExplorer.NewEndpointFound += acnPortExplorer_NewEndpointFound;
        acnPortExplorer.Start();

    }

这是我目前的 VB 代码:

Private Sub Start(networkCard As CardInfo, universes As IEnumerable(Of Integer))
    socket = New StreamingAcnSocket(Guid.NewGuid(), "Streaming ACN Snoop")
    ''yet to convert this line
    socket.Open(networkCard.IpAddress)

    For Each universe As Integer In universes
        socket.JoinDmxUniverse(universe)
    Next

    dmxOutput = New DmxStreamer(socket)
    dmxOutput.AddUniverse(sendData.Universe)

    acnPortExplorer = New RdmNetEndPointExplorer()
    acnPortExplorer.LocalAdapter = networkCard.IpAddress
    acnPortExplorer.NewEndpointFound += acnPortExplorer_NewEndpointFound
    acnPortExplorer.Start()

End Sub

我正在尝试将此以及其他功能转换为 VB。我已经设法在在线代码转换器的帮助下转换了几乎所有内容。但是,我仍然无法弄清楚如何将第 4 行转换为 VB。

如果重要的话,这是来自 ACN on codeplex (https://acn.codeplex.com/) 的 StreamingACN 示例项目。

如果能得到任何帮助,我将不胜感激。谢谢!

【问题讨论】:

标签: c# vb.net


【解决方案1】:

如果你指的是这一行:

socket.NewPacket += new EventHandler<NewPacketEventArgs<Acn.Packets.sAcn.StreamingAcnDmxPacket>>(socket_NewPacket);

你可以这样做:

AddHandler socket.NewPacket, AddressOf socket_NewPacket

这会将事件处理程序附加到socket 实例,将调用转发到方法socket_NewPacket。所有 EventArgs 的东西现在都是 socket_NewSocket 方法的关注点,所以你应该使用签名:

Public Sub socket_NewSocket(sender As Object, args As NewPacketEventArgs(Of Acn.Packets.sAcn.StreamingAcnDmxPacket))
    ' your code goes here
End Sub

【讨论】:

  • 我已经进行了更改,但它仍然给我错误Method 'Private Sub socket_newPacket(args As NewPacketEventArgs(Of StreamingAcnDmxPacket))' does not have a signature compatible with delegate 'Delegate Sub EventHandler(Of NewPacketEventArgs(Of StreamingAcnDmxPacket))(sender As Object, e As NewPacketEventArgs(Of StreamingAcnDmxPacket))'.
  • 我忘记了必填的sender。已更新。
猜你喜欢
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多