没有参数的事件处理程序/注册服务?

时间:2017-07-12 13:33:03

标签: c# vb.net event-handling parameter-passing

我们有一个程序要求我实现一个新模块。新模块有一个ADK,所以应该很容易。但是,演示代码是用C#编写的(并在WPF上运行)。

我的问题是关于事件处理程序。在C#代码中,这是事件处理程序:

INSERT INTO brand VALUES (@brandId,@type,@name,@image)

在初始化时,EventHandler设置为:

// handle dispatch base events
void EventHandler_DSPBASE(EventBase e)
{
    try
    {
        ServiceEvent serviceEvent = e as ServiceEvent;
        if (serviceEvent == null)
            return;

        // more code here
    }
    catch (Exception exception)
    {
        // catch exceptions here
    }
}

使用VS 2015我可以毫无问题地运行演示代码。当我将其翻译为VB.NET时,我收到错误,因为事件处理程序需要参数(EventBase e)。所以在Initialized部分,这个VB.NET代码将不会运行。

// register dispatch handler
ServiceBase servicebase = _oModule.GetService(ServiceType.DSPBASE);
if (servicebase != null)
{
    // handle data received from the dispatch base component
    servicebase.Register(EventHandler_DSPBASE);
    servicebase.SetDispatchBaseOption(12500, DispatchBase.ROUTE_DATA_RECEIVED);
}

这个代码是否有理由通过C#而不是通过VB.NET运行?有没有一种方法可以设置Handler而不传递VB.NET中程序所需的参数?

1 个答案:

答案 0 :(得分:0)

  

我不知道自己做错了什么(胖子错字或其他什么),但是   AddressOf确实解决了这个问题。

像这样使用AddressOf

servicebase.Register(AddressOf EventHandler_DSPBASE)
相关问题