如何将回调委托传递到.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);
        }
    }

如何将回调委托传递到.netCF中的dll

如果本机回调使用__stdcall调用约定,则可以使用Marshal.GetFunctionPointerForDelegate方法来完成此操作。