Walther MFS100检查扫描仪检测到CallbackOnCollectedDelegate
问题描述:
我正在尝试编程一个Walther Mfs100接口检查扫描仪,但在扫描后我得到“CallbackOnCollectedDelegate was detected”错误。我怎样才能解决这个问题。我.NET 2.0中使用与C#Walther MFS100检查扫描仪检测到CallbackOnCollectedDelegate
[DllImport("mflib.dll.stdcall")]
public static extern int mfScanFeeder(int mode, int font, int timeout);
retval = modMFS100.mfScanFeeder(0, 2,5000);
答
这不是这个特定的API调用是问题的根源。这个API太模糊而且记录太差,无法给出直接的答案,但是请查找一个初始化样式函数,让您设置回调。该回调是异常的原因。您必须创建一个委托对象并将其存储在类的一个字段中。这样垃圾收集器就会看到它的引用,并且不会垃圾收集它。
代替因此,:
void SetupScanner() {
mfInitialize(something, myCallback);
}
做这样的:
SomeDelegateType callback;
void SetupScanner() {
callback = new SomeDelegateType(myCallback);
mfInitialize(something, callback);
}
联系供应商的支持,如果这没有帮助。
答
下面是关于此错误的信息:
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/665b876d-9070-41de-9a3a-d2093895d0c2
你可以尝试使用静态变量的代表,这将防止垃圾回收委托。
你,先生,真棒! @rotman值得一枚奖章!静态为我解决了同样的问题。 – DomenicDatti 2013-09-25 04:11:46