如何将回调委托传递到.netCF中的dll
本文关键字:netCF 中的 dll 回调 | 更新日期: 2023-09-27 18:21:16
我正在编写一个.netCF应用程序,该应用程序与不同硬件平台上的条形码扫描仪接口。I.E.摩托罗拉或Intermec等。我用自己的dll包装了他们的dll,以呈现一个通用接口,我在运行时用Reflection LoadFrom()加载我的dll,然后获得一个方法引用。
除了一个例外,我可以将大多数参数传递给dll中的方法。我需要向dll传递一个回调函数,这样当发生读取时,它就会回调到主程序中来处理条形码读取。
当我调用该方法时,它会抛出一个ArgumentException。
我的问题是如何将此方法引用传递到我的dll,或者有更好的方法吗?
public delegate void ReadNotify(BCReadData readData);
public void AttachReadNotify(ReadNotify ReadNotifyHandler)
{
if (type == ReaderType.UNKNOWN || scanIntf == null)
return;
try
{
setReadNotify.Invoke(scanIntf,new Object [] {ReadNotifyHandler});
}
catch (Exception e)
{
throw new Exception("Unable to set notify handler" + e.Message);
}
}
如果本机回调使用__stdcall调用约定,则可以使用Marshal.GetFunctionPointerForDelegate方法来完成此操作。