我正在使用Python脚本和Pythonnet驱动C#库。该库在某些事件上触发委托方法。我注册了委托方法,但它没有被调用。
所涉及的方法定义为
我还尝试了以下代码:
我还查看了以下内容: 环境:
所涉及的方法定义为
event EventHandler<EventArgs> SystemInformationUpdated
有趣的是,另一个具有自定义类返回值的方法被调用,其定义为event EventHandler<PeripheralDiscoveredEventArgs> PeripheralDiscovered
当我使用IronPython运行此代码时,一切正常,因此我认为这是PythonNET的问题。我的代码如下:from System import EventHandler, EventArgs
(...)
dc = EventHandler[PeripheralDiscoveredEventArgs](centralOnPeripheralDiscovered_callback)
central.PeripheralDiscovered += dc
iuc = EventHandler[EventArgs](systemInformationUpdated_callback)
central.SystemInformationUpdated += iuc
systemInformationUpdated_callback
回调函数在调用centralOnPeripheralDiscovered_callback
函数时不会被执行。我还尝试了以下代码:
from System import EventArgs
(...)
EventHandler = getattr(System, 'EventHandler`1')
dc = EventHandler[PeripheralDiscoveredEventArgs](centralOnPeripheralDiscovered_callback)
central.PeripheralDiscovered += dc
EventHandler = getattr(System, 'EventHandler`1')
iuc = EventHandler[EventArgs](systemInformationUpdated_callback)
central.SystemInformationUpdated += iuc
我相信PythonNET 2.2已经修复了这个bug,所以它也不起作用了。
使用控制台,我得到以下结果:
dc
<0, Culture=neutral, PublicKeyToken=null]]>
iuc
<0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]>
对象的目标属性是
Target <__System_EventHandler`1\[\[System_EventArgs\, mscorlib\, Version=4_0_0_0\, Culture=neutral\, PublicKeyToken=b77a5c561934e089\]\]Dispatcher> __System_EventHandler`1\[\[System_EventArgs\, mscorlib\, Version=4_0_0_0\, Culture=neutral\, PublicKeyToken=b77a5c561934e089\]\]Dispatcher
我还查看了以下内容: 环境:
- Python 3.6 64位,
- PythonNET 2.3.0
- .NET Framework 4.5.2
- Windows 7 Enterprise 64位