Python for.NET订阅C事件,但引发ConversionException

2024-09-27 07:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个DLL,它公开了这个C事件:

[Serializable]
public delegate object[] MyEventHandler(object[] data);

event MyEventHandler MyEvent;

以及订阅它的python代码:

^{pr2}$

当DLL触发事件时,不会到达MyPythonEventHandler中的print语句;而是Python抛出ConversionException。因为异常不可序列化,所以DLL实际上接收到此异常:

System.Runtime.Serialization.SerializationException: Type 'Python.Runtime.
ConversionException' in Assembly 'Python.Runtime, Version=2.0.0.2, Culture=neutral,
PublicKeyToken=null' is not marked as serializable.

所以我真的不知道到底是什么样的转换正在尝试和失败。在

我成功地处理了来自这个DLL的其他事件回调,所以我猜这个失败与这个特定事件的委托签名有关。我的python处理程序的签名有问题吗?在

谢谢, 吉姆


Tags: 代码eventdataobject事件publicruntimedll
1条回答
网友
1楼 · 发布于 2024-09-27 07:31:39

我创建了一个简单的DLL,其中一个类包含委托、事件和激发事件的Run方法。剥离我的python来创建对象,订阅并运行。立即得到一个错误,表明我没有声明一个名为mypythoneventhadler的函数。在名字里发现了一个错误。在

不明白为什么Python没有在原始脚本中重新设置这个错误,但是现在我已经修复了这个名称,它就可以工作了。在

相关问题 更多 >

    热门问题