我们有一个程序要求我实现一个新模块。新模块有一个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中程序所需的参数?
答案 0 :(得分:0)
我不知道自己做错了什么(胖子错字或其他什么),但是 AddressOf确实解决了这个问题。
像这样使用AddressOf:
servicebase.Register(AddressOf EventHandler_DSPBASE)